Masalah:
Bagaimanakah kita boleh mengakses dan memanipulasi data dengan cekap dalam struktur kamus bersarang dalam menggunakan senarai kekunci?
Penyelesaian:
Fungsi Python asli functools.reduce boleh digunakan untuk melintasi kamus dengan cekap dalam satu lulus.
Pelaksanaan:
from functools import reduce import operator def get_by_path(root, items): """Access a nested object in root by item sequence.""" return reduce(operator.getitem, items, root)
Penggunaan:
Untuk mendapatkan semula nilai pada laluan yang ditentukan, gunakan get_by_path :
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] value = get_by_path(dataDict, maplist) # 1
Tetapan Nilai:
Untuk menetapkan nilai pada laluan tertentu, kita boleh menggunakan semula get_by_path untuk mencari kamus induk dan menetapkan nilai kepada kunci yang dikehendaki:
def set_by_path(root, items, value): """Set a value in a nested object in root by item sequence.""" get_by_path(root, items[:-1])[items[-1]] = value
Penggunaan:
maplist = ["b", "v", "w"] set_by_path(dataDict, maplist, 4)
Tambahan Kefungsian:
Untuk kesempurnaan, kami juga boleh mentakrifkan fungsi untuk memadamkan pasangan nilai kunci dalam kamus bersarang:
def del_by_path(root, items): """Delete a key-value in a nested object in root by item sequence.""" del get_by_path(root, items[:-1])[items[-1]]
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses dan Mengubah Suai Data dengan Cekap dalam Kamus Python Bersarang Menggunakan Senarai Kekunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!