Bagaimanakah Saya Boleh Mencipta lalai Infinitely Nested dalam Python?

Linda Hamilton
Lepaskan: 2024-11-24 04:35:11
asal
594 orang telah melayarinya

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]
{}
Salin selepas log masuk

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))
Salin selepas log masuk

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(...)))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan