Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengemas kini Kamus Bersarang Kedalaman Pembolehubah Sambil Mengekalkan Nilai Tertentu?

Bagaimana untuk Mengemas kini Kamus Bersarang Kedalaman Pembolehubah Sambil Mengekalkan Nilai Tertentu?

DDD
DDDasal
2024-11-08 03:31:01337semak imbas

How to Update Nested Dictionaries of Variable Depth While Preserving Specific Values?

Mengemas kini Kamus Bersarang bagi Kedalaman Pembolehubah

Anda menghadapi dilema apabila cuba mengemas kini kamus bersarang (kamus1) dengan kandungan kamus lain (kemas kini) sambil mengekalkan nilai tertentu dalam struktur bersarang. Khususnya, anda ingin mengemas kini kunci "level2" dalam kamus1 tanpa menulis ganti nilai "levelA".

Untuk menangani cabaran ini, penyelesaian rekursif dicadangkan. Kod Python berikut melaksanakan pendekatan ini:

def merge_dicts(dict1, dict2):
    for key in dict2:
        if key in dict1 and isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
            merge_dicts(dict1[key], dict2[key])
        else:
            dict1[key] = dict2[key]

Fungsi ini secara rekursif merentasi kedua-dua kamus dan mengemas kini nilai berdasarkan peraturan berikut:

  • Jika kedua-dua kekunci wujud dalam kedua-dua kamus dan kamus itu sendiri, fungsi itu memanggil dirinya secara rekursif, menggabungkan kamus bersarang.
  • Jika tidak, nilai daripada dict2 ditetapkan kepada dict1.

Dengan menggunakan pendekatan rekursif ini, anda boleh mengubah suai bersarang kamus dengan kedalaman yang berbeza-beza sambil mengekalkan nilai tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Kamus Bersarang Kedalaman Pembolehubah Sambil Mengekalkan Nilai Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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