使用鍵列表存取巢狀字典項目
存取巢狀字典結構可能是 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中文網其他相關文章!