Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengemas kini Kamus Bersarang dalam Python sambil Mengekalkan Nilai Sedia Ada?

Bagaimana untuk Mengemas kini Kamus Bersarang dalam Python sambil Mengekalkan Nilai Sedia Ada?

Mary-Kate Olsen
Lepaskan: 2024-11-09 06:35:02
asal
671 orang telah melayarinya

How to Update Nested Dictionaries in Python while Preserving Existing Values?

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)
Salin selepas log masuk

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:

  1. Mengulang melalui kekunci dan nilai dalam kamus kemas kini.
  2. Jika nilai ialah pemetaan (kamus lain), panggil kemas kini secara rekursif pada sub-kamus yang sepadan dalam kamus asal.
  3. Jika tidak, kemas kini nilai seperti biasa.

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)
Salin selepas log masuk

Output

{'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Salin selepas log masuk

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!

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