我得到了一些由這種結構提供的覆寫元素:
(keys, value)
我想用它來更改嵌套物件(字典和串列)中的值。它可能看起來像這樣:
data[keys[0]][keys[1]][keys[2]] = value
難點是,鍵的數量是可變的。我不知道如何遞回地管理這個。
uj5u.com熱心網友回復:
使用functools.reduce和的功能方法operator.getitem
from functools import reduce
from operator import getitem
data = {"a": {"b": {"c": 1}}}
keys = ["a", "b", "c"]
*suffix, key = keys
reduce(getitem, suffix, data)[key] = 2
print(data)
輸出
{'a': {'b': {'c': 2}}}
uj5u.com熱心網友回復:
您可以執行以下操作(迭代):
def setkeys(data, keys, value):
*path, last = keys
for key in path:
data = data[key]
data[last] = value
或者對于遞回解決方案:
def setkeys(data, keys, value):
head, *tail = keys
if tail:
setkeys(data[head], tail, value)
else:
data[head] = value
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/335385.html
