【发布时间】:2020-11-09 17:22:45
【问题描述】:
我想用“列表路径”写入字典。我有:
container = {}
path = ['foo', 'bar']
data = [1, 2, 3]
想得到
container = {
'foo' : {
'bar' : [1, 2, 3]
}
}
阅读,我很热心this answer,上面写着阅读:
data = functools.reduce(operator.getitem, path, container)
但现在我没有设法得到相反的权利......
(我想可以使用递归,但单行解决方案似乎很近!)
【问题讨论】:
-
@jdaz 谢谢!也许我很天真,但这些答案告诉我如何构建嵌套字典(构建
container),但还不知道如何将data写入它。另外......单线会很好! -
reduce 的问题是它只适用于接受两个参数的函数,
operator.setitem需要 3 个参数(容器、索引、值)。我再挠挠头…… -
Tom,您可以将该问题中的单行答案更改为仅使用
data作为reduce的初始对象:functools.reduce(lambda x, y: {y: x}, path[::-1], data) -
惊人的@jdaz!
标签: python dictionary