Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Melakukan Gabungan Dalam Kamus Bersarang dalam Python?

Bagaimana untuk Melakukan Gabungan Dalam Kamus Bersarang dalam Python?

DDD
Lepaskan: 2024-12-04 02:03:10
asal
930 orang telah melayarinya

How to Perform a Deep Merge of Nested Dictionaries in Python?

Gabungan Dalam Kamus Kamus dalam Python

Menggabungkan berbilang kamus dengan kekunci bersarang boleh menjadi tugas yang mencabar. Mari kita pertimbangkan contoh berikut:

dict1 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}}
}

dict2 = {
    2: {"c": {"C"}},
    3: {"d": {"D"}}
}
Salin selepas log masuk

Output yang diingini ialah:

dict3 = {
    1: {"a": {"A"}},
    2: {"b": {"B"}, "c": {"C"}},
    3: {"d": {"D"}}
}
Salin selepas log masuk

Untuk mencapai gabungan dalam ini, kita boleh menggunakan fungsi rekursif:

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            else:
                a[key] = b[key]
        else:
            a[key] = b[key]

    return a
Salin selepas log masuk

Fungsi ini mengambil dua kamus, a dan b, dan laluan yang menjejaki lokasi semasa dalam struktur bersarang. Ia berulang melalui kekunci dalam b dan menyemak sama ada kunci yang sepadan wujud dalam a. Jika nilai pada kunci itu ialah kedua-dua kamus, ia memanggil fungsi gabungan secara rekursif untuk menggabungkan sub-kamus tersebut. Jika tidak, ia mengemas kini nilai dalam a dengan nilai daripada b.

Untuk contoh dicts di atas, fungsi gabungan akan menghasilkan hasil yang diingini:

print(merge(dict1, dict2))
Salin selepas log masuk

Outputnya ialah:

{
    1: {'a': {'A'}},
    2: {'b': {'B'}, 'c': {'C'}},
    3: {'d': {'D'}}
}
Salin selepas log masuk

Nota: Fungsi ini mengubah kamus pertama, a. Jika anda ingin mengekalkan kandungannya, anda boleh membuat salinan sebelum digabungkan, cth., cantum(dict(a), b).

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Dalam Kamus Bersarang dalam Python?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan