Apabila bekerja dengan kamus bersarang, selalunya perlu mengemas kini kunci tertentu tanpa menjejaskan tahap lain. Walau bagaimanapun, kaedah kemas kini standard dalam Python menimpa semua kunci pada tahap yang sama, menjadikannya mencabar untuk mencapai matlamat ini.
Pendekatan rekursif boleh menangani isu ini dengan berkesan. Dengan merentasi kamus secara rekursif, kami boleh mengenal pasti dan mengemas kini kunci pada kedalaman yang sesuai sambil mengekalkan struktur sedia ada.
Sebagai contoh, fungsi rekursif berikut boleh digunakan untuk mengemas kini kandungan kemas kini ke dalam kamus1 tanpa menulis ganti levelA:
def update(d, u): for k, v in u.items(): if isinstance(v, dict): d[k] = update(d.get(k, {}), v) else: d[k] = v return d
Dalam fungsi ini, kami menyemak sama ada v ialah kamus dan secara rekursif memanggil kemas kini dengan sub-kamus yang sesuai. Jika v bukan kamus, kami hanya mengemas kini kunci yang sepadan dalam d. Ini memastikan bahawa kunci perantaraan tidak ditimpa.
Pertimbangkan contoh berikut:
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dictionary = update(dictionary1, update) print(updated_dictionary) # Output: # {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Seperti yang anda lihat, levelA disimpan dalam kamus yang dikemas kini, walaupun kemas kini mengandungi nilai untuk levelB. Ini menunjukkan keberkesanan pendekatan rekursif.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Kamus Bersarang dalam Python Tanpa Mengganti Kekunci Perantaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!