Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mencipta lalai Infinitely Nested dalam Python?

Bagaimanakah Saya Boleh Mencipta lalai Infinitely Nested dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 04:35:11618semak imbas

How Can I Create an Infinitely Nested defaultdict in Python?

Defaultdict Bersarang Tahap Tak Terhingga

Soalan

Bagaimanakah seseorang boleh membuat lalai bersarang tak terhingga? Dalam erti kata lain, adakah mungkin untuk menetapkan nilai lalai bagi lalai menjadi lalai lain? Ini akan membenarkan struktur bersarang kedalaman arbitrari yang mencipta kamus yang diperlukan secara automatik mengikut keperluan.

Sebagai contoh, pertimbangkan kod berikut:

x = defaultdict(...stuff...)
x[0][1][0]
{}

Dalam senario ini, x[0] akan menjadi defaultdict, x[0][1] akan menjadi defaultdict lain dan x[0][1][0] akan menjadi standard kamus.

Jawapan

Walaupun mungkin untuk membuat lalai yang mengandungi lalai lain, ia tidak disokong secara langsung oleh argumen lalai standard. Walau bagaimanapun, terdapat penyelesaian mudah yang membenarkan lalai bersarang berbilang peringkat.

Daripada mentakrifkan nilai lalai sebagai lalai lain, tentukan nilai lalai sebagai fungsi lambda yang mengembalikan lalai:

x = defaultdict(lambda: defaultdict(dict))

Kod ini mencipta defaultdict dua peringkat, dengan x[0] ialah defaultdict dan x[0][1] ialah defaultdict yang lain, dengan nilai sebagai kamus.

Untuk sarang tahap tak terhingga, cuma tambah tahap tambahan pada fungsi lambda:

x = defaultdict(lambda: defaultdict(lambda: defaultdict(...)))

Penyelesaian ini membolehkan penciptaan lalai bersarang sewenang-wenangnya, menyediakan cara yang mudah untuk mengurus struktur data yang kompleks dengan penciptaan nilai automatik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta lalai Infinitely Nested dalam Python?. 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