首頁 > 後端開發 > Python教學 > 如何使用鍵列表高效存取和修改嵌套 Python 字典中的資料?

如何使用鍵列表高效存取和修改嵌套 Python 字典中的資料?

DDD
發布: 2024-12-23 08:38:16
原創
839 人瀏覽過

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

使用鍵列表導航巢狀字典

問題:

我們如何有效地存取和操作資料使用清單的深度嵌套字典結構鍵?

解:

Python 原生函數 functools.reduce可用於一次高效地遍歷字典pass.

實作:

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)
登入後複製

用法:

要檢索指定路徑處的值,請使用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
登入後複製

設定值:

要在特定路徑設定值,我們可以重複使用get_by_path來定位父字典並將數值指派給想要的鍵:

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
登入後複製

用法:

maplist = ["b", "v", "w"]
set_by_path(dataDict, maplist, 4)
登入後複製

附加功能:

為了完整性,我們也可以定義刪除巢狀鍵值對的函數字典:

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]]
登入後複製

以上是如何使用鍵列表高效存取和修改嵌套 Python 字典中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板