给定一个对象,它可以是类字典或类数组对象的嵌套结构。在给定点路径作为字符串的情况下,在该对象上设置值的 pythonic 方法是什么?
例子:
obj = [
{'a': [1, 2]},
{'b': {
'c': [3, 4],
}},
]
path = '1.b.c.0'
# operation that sets a value at the given path, e.g.
obj[path] = 5
# or
set_value(obj, path, 5)
上面的调用/赋值应该用 5
替换示例中的 3
。
注意:路径可以包含列表索引和键。对象的每个级别都可以是 array
或 dict
或类似行为的东西。
解决方案应该大致像什么npm包object-path
在 javascript 中执行。
最佳答案
非递归版本,也适用于数字字典键:
from collections.abc import MutableMapping
def set_value_at_path(obj, path, value):
*parts, last = path.split('.')
for part in parts:
if isinstance(obj, MutableMapping):
obj = obj[part]
else:
obj = obj[int(part)]
if isinstance(obj, MutableMapping):
obj[last] = value
else:
obj[int(last)] = value
关于python - 如何在给定虚线路径的对象上设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51876885/