Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar OrderedDict bersarang ke Dict dalam Python?

Bagaimana untuk menukar OrderedDict bersarang ke Dict dalam Python?

WBOY
WBOYke hadapan
2023-08-29 23:09:17730semak imbas

Bagaimana untuk menukar OrderedDict bersarang ke Dict dalam Python?

Python ialah bahasa pengaturcaraan popular yang digunakan secara meluas dalam pelbagai aplikasi, termasuk pembangunan web, sains data dan pembelajaran mesin. Kesederhanaan, fleksibiliti dan kemudahan penggunaannya menjadikannya pilihan yang sangat baik untuk pembangun. Satu ciri yang menonjolkan Python ialah kelas OrderedDict, iaitu subkelas kamus yang mengingati susunan item yang dimasukkan. Walau bagaimanapun, dalam beberapa kes, kami mungkin perlu menukar OrderedDict bersarang kepada dict biasa untuk pemprosesan selanjutnya data.

Dalam tutorial ini, kami akan menerangkan maksud OrderedDict bersarang dan mengapa perlu menukarnya kepada kamus biasa. Kami akan memperkenalkan anda kepada proses menukar OrderedDict bersarang kepada kamus melalui kaedah rekursif. Kami juga akan menyediakan contoh kod penggunaan dan menerangkan faedah menggunakan kamus biasa dan bukannya OrderedDict bersarang. Jadi, mari kita selami artikel seterusnya dan ketahui lebih lanjut tentang menukar OrderedDict bersarang kepada kamus.

Apakah itu OrderedDict?

OrderedDict ialah subkelas kamus biasa di mana susunan item dikekalkan. Ini bermakna bahawa item dalam OrderedDict disimpan dalam susunan ia ditambahkan pada kamus.

Sekarang mari kita teruskan menerangkan kamus tersusun bersarang. Seperti namanya, kamus tersusun bersarang ialah kamus tersusun yang mengandungi kamus tersusun lain. Ini bermakna bahawa nilai dalam kamus tersusun luaran adalah kamus tersusun sendiri. Ini ialah struktur data yang berguna untuk mewakili data bersarang atau hierarki.

Ini ialah contoh OrderedDict bersarang:

from collections import OrderedDict

nested_odict = OrderedDict({
    'Name': 'John Doe',
    'Age': 25,
    'Contact': OrderedDict({
        'Email': 'johndoe@example.com',
        'Phone': '123-456-7890'
    }),
    'Address': OrderedDict({
        'Street': '123 Main St',
        'City': 'Anytown',
        'State': 'CA',
        'Zip': '12345'
    })
})

Dalam contoh di atas, kami mencipta Nested OrderedDict untuk mewakili maklumat tentang seseorang, termasuk nama, umur, maklumat hubungan dan alamat. Nilai kekunci "Kenalan" dan "Alamat" adalah OrderedDicts sendiri.

Struktur kamus tersusun bersarang boleh seperti berikut:

{
    'Name': 'John Doe',
    'Age': 25,
    'Contact': {
        'Email': 'johndoe@example.com',
        'Phone': '123-456-7890'
    },
    'Address': {
        'Street': '123 Main St',
        'City': 'Anytown',
        'State': 'CA',
        'Zip': '12345'
    }
}

Sekarang kita telah memahami struktur kamus tersusun bersarang, mari kita fahami cara menukar kamus tersusun bersarang ini kepada kamus biasa menggunakan kaedah rekursif.

Bagaimana untuk menukar OrderedDict bersarang kepada dict?

Salah satu cara untuk menukar OrderedDict bersarang kepada dict ialah menggunakan rekursi. Rekursi adalah teknik pengaturcaraan yang melibatkan panggilan fungsi sendiri. Dalam kes ini, kita boleh menulis fungsi yang memanggil dirinya secara rekursif untuk menukar setiap OrderedDict bersarang kepada dict biasa.

Berikut ialah contoh yang menunjukkan cara menukar OrderedDict bersarang kepada dict menggunakan rekursi:

def nested_odict_to_dict(nested_odict):
   # Convert the nested ordered dictionary into a regular dictionary and store it in the variable "result".
   result = dict(nested_odict)

   # Iterate through each key-value pair in the dictionary.
   for key, value in result.items():

       # Check if the value is an instance of the OrderedDict class.
       if isinstance(value, OrderedDict):
           # If the value is an instance of the OrderedDict class, recursively call the function on that value and store the returned dictionary in the "result" dictionary.
           result[key] = nested_odict_to_dict(value)
   return result

Dalam kod di atas, kami mula-mula mencipta kamus biasa daripada Nested OrderedDict menggunakan fungsi dict() terbina dalam. Kami kemudiannya melingkari setiap pasangan nilai kunci dalam kamus dan menyemak sama ada nilai itu adalah contoh OrderedDict. Jika ya, kami memanggil fungsi yang sama secara rekursif pada nilai itu dan menggantikan nilai dalam kamus asal dengan kamus biasa yang dikembalikan.

Mari pecahkan kod dan fahami cara ia berfungsi:

result = dict(nested_odict)

Baris kod ini mencipta kamus baharu (hasil) dengan menukar kamus tertib masuk (nested_odict) kepada kamus biasa.

for key, value in result.items():
    if isinstance(value, OrderedDict):
        result[key] = nested_odict_to_dict(value)

Gelung ini berulang melalui semua item dalam kamus yang terhasil. Untuk setiap pasangan nilai kunci, ia menyemak sama ada nilai tersebut ialah kamus tersusun. Jika ya, fungsi itu memanggil dirinya secara rekursif, menghantar kamus yang diisih sebagai hujah, dan menggantikan nilai dalam hasil dengan kamus yang dikembalikan.

Sekarang marilah kita memahaminya melalui contoh.

Contoh menukar OrderedDict bersarang kepada Dict

Mari kita ambil Nested OrderedDict yang sama yang kita lihat sebelum ini dan tukarkannya kepada kamus biasa menggunakan fungsi nested_odict_to_dict():

from collections import OrderedDict

nested_odict = OrderedDict({
    'Name': 'John Doe',
    'Age': 25,
    'Contact': OrderedDict({
        'Email': 'johndoe@example.com',
        'Phone': '123-456-7890'
    }),
    'Address': OrderedDict({
        'Street': '123 Main St',
        'City': 'Anytown',
        'State': 'CA',
        'Zip': '12345'
    })
})

regular_dict = nested_odict_to_dict(nested_odict)
print(regular_dict)

Coretan kod di atas mencipta kamus tertib bersarang berbilang peringkat nested_odict dan memanggil fungsi nested_odict_to_dict untuk menukarnya menjadi kamus bersarang biasa. Output kod ini akan menjadi kamus bersarang dengan kunci dan nilai yang sama seperti kamus pesanan asal nested_odict, tetapi tanpa jaminan pesanan.

Output

{
    'Name': 'John Doe',
    'Age': 25,
    'Contact': {
        'Email': 'johndoe@example.com',
        'Phone': '123-456-7890'
    },
    'Address': {
        'Street': '123 Main St',
        'City': 'Anytown',
        'State': 'CA',
        'Zip': '12345'
    }
}

Seperti yang anda lihat, Nested OrderedDict telah berjaya ditukar kepada kamus biasa menggunakan fungsi nested_odict_to_dict().

KESIMPULAN

Dalam artikel ini, kami membincangkan cara menukar OrderedDict bersarang kepada dict biasa menggunakan kaedah rekursif. Kami menerangkan apa itu OrderedDict dan apakah itu OrderedDicts bersarang. Kami juga menyediakan contoh OrderedDict bersarang yang mewakili maklumat peribadi. Untuk menukar OrderedDict bersarang kepada dict biasa, kami menggunakan rekursi untuk menulis fungsi yang memanggil dirinya sendiri untuk menukar setiap OrderedDict bersarang kepada dict biasa. Kami juga menyediakan contoh yang menunjukkan cara menggunakan fungsi ini untuk menukar OrderedDict bersarang yang kami buat sebelum ini menjadi dict biasa. Dengan menukar OrderedDict bersarang kepada dict biasa, kami boleh memudahkan pemprosesan data dan melaksanakan pelbagai operasi dengan lebih mudah.

Atas ialah kandungan terperinci Bagaimana untuk menukar OrderedDict bersarang ke Dict dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam