Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membina Kamus Berbilang Aras dengan Kedalaman Pembolehubah Diberi Senarai Bersarang?

Bagaimana untuk Membina Kamus Berbilang Aras dengan Kedalaman Pembolehubah Diberi Senarai Bersarang?

Patricia Arquette
Patricia Arquetteasal
2024-10-17 11:10:30311semak imbas

How to Construct a Multi-Level Dictionary with Variable Depth Given a Nested List?

Membina Kamus Pelbagai Aras dengan Kedalaman Yang Berbeza

Soalan:

Bagaimanakah seseorang boleh membina kamus pelbagai peringkat dengan kedalaman berubah-ubah, diberikan senarai nilai bersarang? Pertimbangkan senarai contoh berikut:

<code>[A][B1][C1] = 1
[A][B1][C2] = 2
[A][B2] = 3
[D][E][F][G] = 4</code>

Output yang dikehendaki ialah kamus berbilang peringkat yang menyerupai struktur berikut:

<code>A
--B1
-----C1 = 1
-----C2 = 1
--B2 = 3
D
--E
----F
------G = 4</code>

Penyelesaian:

Menggunakan defaultdict daripada modul collections, seseorang boleh mencipta kamus bersarang secara dinamik tanpa memerlukan pernyataan sisipan pengekodan keras. defaultdict mengembalikan nilai lalai apabila kunci sedia ada tidak ditemui. Begini cara ia boleh dilaksanakan:

<code class="python">from collections import defaultdict

# Define a function to create a nested dictionary with any level of depth
nested_dict = lambda: defaultdict(nested_dict)

# Create the nested dictionary using the nested_dict function
nest = nested_dict()

# Populate the nested dictionary with the given data
nest[0][1][2][3][4][5] = 6

print(nest)</code>

Kod ini akan mencipta kamus bersarang dengan kedalaman 7, di mana nilai untuk kunci [0][1][2][3][4][5] ditetapkan kepada 6. Kamus bersarang boleh diakses menggunakan struktur utama yang sama, membolehkan penciptaan dinamik dan mendapatkan semula data pada pelbagai peringkat.

Atas ialah kandungan terperinci Bagaimana untuk Membina Kamus Berbilang Aras dengan Kedalaman Pembolehubah Diberi Senarai Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn