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

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

DDD
DDD原創
2024-12-27 02:53:08455瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn