给定一个对象可以是类似dict或类似数组的对象的嵌套结构.在给定虚线路径作为字符串的情况下,在该对象上设置值的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)
Run Code Online (Sandbox Code Playgroud)
上面的调用/赋值应该3
用a 替换示例中的5
.
注意:路径可以包含列表索引和键.对象的每个级别可以是一个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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
154 次 |
最近记录: |