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.
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!