Mengakses Nilai Kamus Bersarang Secara Rekursif
Apabila bekerja dengan kamus bersarang, selalunya perlu untuk mengulangi semua pasangan nilai kunci untuk mengekstrak data tertentu. Masalah ini timbul apabila cuba menggelung kamus dan mendapatkan semula semua nilai kamus tidak bersarang sambil mengakses nilai kamus bersarang secara rekursif.
Percubaan pertama menggunakan lelaran hanya berfungsi untuk dua peringkat pertama disebabkan skop terhad bagi gelung dalam. Percubaan kedua juga gagal merentasi kamus sepenuhnya kerana pelaksanaannya yang statik.
Untuk mengatasi had ini, rekursi diperlukan. Dengan mentakrifkan fungsi untuk mencetak nilai kamus, anda boleh memanggil fungsi secara rekursif pada mana-mana kamus bersarang untuk mengakses nilainya.
Berikut ialah contoh penyelesaian rekursif:
def myprint(d): for k, v in d.items(): if isinstance(v, dict): myprint(v) # Recurs if value is a dictionary else: print("{0} : {1}".format(k, v))
Penyelesaian ini bermula dengan lelaran melalui pasangan nilai kunci kamus input. Untuk setiap pasangan nilai kunci, ia menyemak sama ada nilai itu ialah kamus. Jika ya, ia secara rekursif memanggil fungsi myprint dengan kamus bersarang sebagai parameter. Jika nilai itu bukan kamus, ia hanya mencetak pasangan nilai kunci.
Dengan menggunakan rekursi, penyelesaian ini boleh merentasi sebarang bilangan peringkat kamus bersarang untuk mengakses dan mencetak semua nilai kamus tidak bersarang.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses dan Mencetak Nilai secara Rekursif daripada Kamus Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!