Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melakukan Gabungan Dalam Kamus Bersarang dalam 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"}} }
Output yang diingini ialah:
dict3 = { 1: {"a": {"A"}}, 2: {"b": {"B"}, "c": {"C"}}, 3: {"d": {"D"}} }
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
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))
Outputnya ialah:
{ 1: {'a': {'A'}}, 2: {'b': {'B'}, 'c': {'C'}}, 3: {'d': {'D'}} }
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!