Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengakses dan Mengemas kini Item Kamus Bersarang dalam Python Dengan Cekap Menggunakan Senarai Kekunci?

Bagaimanakah Saya Boleh Mengakses dan Mengemas kini Item Kamus Bersarang dalam Python Dengan Cekap Menggunakan Senarai Kekunci?

DDD
DDDasal
2024-12-27 02:53:08455semak imbas

How Can I Efficiently Access and Update Nested Dictionary Items in Python Using a List of Keys?

Mengakses Item Kamus Bersarang Menggunakan Senarai Kekunci

Mengakses struktur kamus bersarang boleh menjadi tugas biasa dalam pengaturcaraan Python. Di sini, kami meneroka pendekatan yang lebih cekap daripada kod yang disediakan untuk mendapatkan dan mengubah suai data dalam kamus kompleks menggunakan senarai kunci.

Menggunakan reduce() untuk Enhanced Traversal

Fungsi reduce() ialah alat yang berkuasa untuk mengubah jujukan nilai dengan menggunakan satu operasi. Dalam kes ini, kita boleh menggunakannya untuk melintasi struktur kamus, mengurangkan senarai kunci kepada satu nilai. Kaedah operator.getitem digunakan sebagai operasi untuk mendapatkan semula peringkat kamus seterusnya pada setiap lelaran.

from functools import reduce  # forward compatibility for Python 3
import operator

def get_from_dict(data_dict, map_list):
    return reduce(operator.getitem, map_list, data_dict)

Mengemas kini Data dengan reduce() dan operator.setitem

Untuk mengemas kini nilai kamus bersarang, kami boleh menggunakan semula get_from_dict untuk mendapatkan semula kamus induk dan menggunakan kaedah operator.setitem untuk menetapkan nilai.

def set_in_dict(data_dict, map_list, value):
    get_from_dict(data_dict, map_list[:-1])[map_list[-1]] = value

Contoh Penggunaan

Mari kita uji kod kami:

data_dict = {
    "a": {
        "r": 1,
        "s": 2,
        "t": 3
        },
    "b": {
        "u": 1,
        "v": {
            "x": 1,
            "y": 2,
            "z": 3
            },
        "w": 3
        }
    }    

map_list = ["a", "r"]
print(get_from_dict(data_dict, map_list))  # Output: 1

map_list = ["b", "v", "y"]
print(get_from_dict(data_dict, map_list))  # Output: 2

map_list = ["b", "v", "w"]
set_in_dict(data_dict, map_list, 4)
print(data_dict)  # Updated dictionary with "w": 4

Pendekatan yang dipertingkatkan ini memanfaatkan fungsi Python yang berkuasa seperti reduce() dan operator.getitem untuk melaksanakan operasi kamus bersarang dengan cekap, menjadikan kod anda lebih bersih dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses dan Mengemas kini Item Kamus Bersarang dalam Python Dengan Cekap Menggunakan Senarai Kekunci?. 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