Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengakses dan Mengubah Suai Data dengan Cekap dalam Kamus Python Bersarang Menggunakan Senarai Kekunci?

Bagaimanakah Saya Boleh Mengakses dan Mengubah Suai Data dengan Cekap dalam Kamus Python Bersarang Menggunakan Senarai Kekunci?

DDD
Lepaskan: 2024-12-23 08:38:16
asal
839 orang telah melayarinya

How Can I Efficiently Access and Modify Data in Nested Python Dictionaries Using a List of Keys?

Menavigasi Kamus Bersarang dengan Senarai Kekunci

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)
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Penggunaan:

maplist = ["b", "v", "w"]
set_by_path(dataDict, maplist, 4)
Salin selepas log masuk

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]]
Salin selepas log masuk

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!

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