Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya Boleh Mencipta lalai Rekursif Tahap Infinite dalam Python?

Bagaimanakah saya Boleh Mencipta lalai Rekursif Tahap Infinite dalam Python?

Susan Sarandon
Lepaskan: 2024-11-25 17:32:15
asal
211 orang telah melayarinya

How Can I Create an Infinite-Level Recursive defaultdict in Python?

Mencipta lalai Rekursif Tahap Infinite

Dalam Python, defaultdict ialah alat serba boleh yang menyediakan nilai lalai untuk kekunci yang hilang dalam kamus. Walau bagaimanapun, adakah mungkin untuk mencipta lalai rekursif peringkat tak terhingga? Ini bermakna mencipta lalai di mana nilai lalai juga merupakan lalai, dengan berkesan mencipta lalai bersarang.

Pada mulanya, seseorang mungkin menjangkakan bahawa x = defaultdict(defaultdict) akan mencipta lalai dua peringkat, tetapi mengakses x[0 ][0] menghasilkan KeyError. Untuk mencapai rekursi tahap tak terhingga, pendekatan alternatif diperlukan.

Satu penyelesaian ialah menggunakan fungsi lambda sebagai nilai lalai:

x = defaultdict(lambda: defaultdict(dict))
Salin selepas log masuk

Ini mewujudkan lalai di mana nilai lalai adalah fungsi yang mengembalikan lalai lain dengan kamus sebagai nilai lalainya. Ini membenarkan pengulangan tahap tak terhingga, kerana mengakses x[0][1][0] mencipta kamus kosong dalam lalai bersarang.

Berbanding dengan kaedah rekursif yang dibentangkan dalam jawapan lain, pendekatan ini menawarkan beberapa kelebihan :

  • Kejelasan: Ia lebih jelas tentang struktur bersarang, menjadikannya lebih mudah untuk faham.
  • Fleksibiliti: Ia membenarkan "daun" struktur lalai menjadi sesuatu selain daripada kamus. Contohnya, defaultdict(lambda: defaultdict(list)) akan membuat defaultdict dengan senarai sebagai nilai daun.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mencipta lalai Rekursif Tahap Infinite 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