Mengemas kini Kamus Bersarang Mengekalkan Nilai Sedia Ada
Dalam Python, mengemas kini kamus dengan struktur bersarang boleh menjadi rumit, terutamanya apabila anda ingin menggabungkan nilai tanpa menimpa yang sedia ada. Soalan ini meneroka cara mengemas kini kamus kamus bersarang1 dengan kandungan kemas kini, sambil mengekalkan nilai dalam levelA.
Kecacatan dalam Pendekatan Asal
Kod Python yang diberikan menunjukkan kesilapan biasa:
dictionary1.update(update)
Kemas kini mudah ini tidak mengekalkan tahapA kerana kamus kemas kini diutamakan dan menimpa keseluruhan struktur di bawah tahap1.
Penyelesaian Rekursif
Penyelesaian yang disediakan dalam jawapan mencadangkan pendekatan rekursif yang melibatkan:
Kod Kemas Kini
Berikut ialah kod yang dipertingkatkan berdasarkan cadangan jawapan:
def update(d, u): for k, v in u.items(): if isinstance(v, collections.abc.Mapping): d[k] = update(d.get(k, {}), v) else: d[k] = v return d dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dict = update(dictionary1, update) print(updated_dict)
Output
{'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Penjelasan
Penyelesaian ini mengemas kini kamus bersarang secara rekursif, memelihara nilai levelA sedia ada sambil mengemas kini nilai di bawah levelB seperti yang dijangkakan.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Kamus Bersarang dalam Python sambil Mengekalkan Nilai Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!