首頁 > 後端開發 > Python教學 > 如何使用鍵列表在 Python 中高效存取和更新巢狀字典項目?

如何使用鍵列表在 Python 中高效存取和更新巢狀字典項目?

DDD
發布: 2024-12-27 02:53:08
原創
455 人瀏覽過

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

使用鍵列表存取巢狀字典項目

存取巢狀字典結構可能是 Python 程式設計中的常見任務。在這裡,我們探索一種比提供的程式碼更有效的方法,用於使用鍵列表檢索和修改複雜字典中的資料。

使用 reduce() 進行增強遍歷

reduce() 函數是一個強大的工具,用於透過應用單一操作來轉換值序列。在這種情況下,我們可以使用它來遍歷字典結構,將鍵列表減少為單一值。 operator.getitem 方法用作在每次迭代時檢索下一個字典層級的操作。

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

使用reduce() 和operator.setitem 更新資料

要更新巢狀字典值,我們可以重複使用get_from_dict來擷取父字典並使用operator.setitem方法來設定

def set_in_dict(data_dict, map_list, value):
    get_from_dict(data_dict, map_list[:-1])[map_list[-1]] = value
登入後複製

範例用法

讓我們測試我們的程式碼:

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

這種增強的方法利用了強大的Python 函數,如reduce()和operator.getitem有效率地執行巢狀字典操作,讓您的程式碼更乾淨、更有效率。

以上是如何使用鍵列表在 Python 中高效存取和更新巢狀字典項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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