Bagaimana untuk Mengemas kini Kamus Bersarang dalam Python Tanpa Mengganti Kekunci Perantaraan?

Patricia Arquette
Lepaskan: 2024-11-06 21:54:02
asal
285 orang telah melayarinya

How to Update Nested Dictionaries in Python Without Overwriting Intermediate Keys?

Mengemas kini Kamus Bersarang Tanpa Mengganti Kekunci Perantara

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

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

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.

Contoh Penggunaan

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!