Cari Semua Kejadian Kunci dalam Kamus dan Senarai Bersarang
Masalah ini membentangkan kamus dengan kedalaman bersarang yang sewenang-wenangnya, mengandungi senarai dan kamus . Matlamatnya adalah untuk mengekstrak nilai setiap "id" kunci dalam struktur.
Penyelesaian:
Fungsi berikut menawarkan pelbagai pendekatan untuk melintasi struktur data bersarang dan dapatkan semula nilai "id":
-
gen_dict_extract(k,o): Fungsi ini menggunakan penjana rekursif untuk menavigasi kamus dan senarai. Ia menyemak fungsi "iteritems" untuk mengendalikan kedua-dua versi Python 2 dan 3.
-
find_all_items(k,o): Sama seperti pendekatan pertama, fungsi ini menggunakan rekursi dan lelaran untuk mengekstrak nilai "id".
-
findkeys(k,o): Fungsi ini memanfaatkan kaedah "isinstance" untuk mengenal pasti senarai dan kamus dalam struktur. Ia menggunakan gelung "untuk" bersarang untuk lelaran melalui data dan mencari kekunci "id".
-
get_recursively(k,o): Fungsi ini menggabungkan prinsip rekursi dan pemahaman untuk melintasi bersarang dan cari kunci sasaran.
-
cari(k,o): Menggunakan pendekatan rekursif yang dipermudahkan, fungsi ini merentasi kamus dan menyenaraikan untuk mengekstrak nilai "id".
-
dict_extract(k,o): Sama seperti fungsi find, fungsi ini menggunakan pendekatan rekursif yang lebih ringkas untuk mencari nilai "id" dalam struktur.
Perbandingan Prestasi:
Selepas menguji fungsi terhadap objek kamus yang kompleks, fungsi gen_dict_extract muncul sebagai yang terpantas, manakala fungsi find_all_items berprestasi rendah dengan ketara. Fungsi lain mempamerkan prestasi yang sama, dengan carian dan Lubang kunci dihadkan kepada operasi carian rentetan.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Semua Kejadian Kunci dalam Kamus dan Senarai Bersarang?. 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