Python 使用列表路径写入字典

Python 使用列表路径写入字典,python,dictionary,Python,Dictionary,我想写一本有“列表路径”的字典。我有: container={} 路径=['foo','bar'] 数据=[1,2,3] 我想 容器={ “福”:{ '酒吧':[1,2,3] } } 对于阅读,我非常热衷,也就是说,阅读: data=functools.reduce(operator.getitem、path、container) 但现在我没能做到相反的正确 (我想可以使用递归,但一行解决方案似乎很接近!)这不是一行解决方案,但我对它做了一些更改,以便将数据添加到最后一个元素中 path

我想写一本有“列表路径”的字典。我有:

container={}
路径=['foo','bar']
数据=[1,2,3]
我想

容器={
“福”:{
'酒吧':[1,2,3]
}
}
对于阅读,我非常热衷,也就是说,阅读

data=functools.reduce(operator.getitem、path、container)
但现在我没能做到相反的正确


(我想可以使用递归,但一行解决方案似乎很接近!)

这不是一行解决方案,但我对它做了一些更改,以便将数据添加到最后一个元素中

path = ['foo','bar']
data = [1,2,3]
container = {}
for key in reversed(path):
    if (key == path[-1]):
        container = {key: data}
    else:
        container = {key: container}
这是输出:
{'foo':{'bar':[1,2,3]}

编辑:没关系,我找到了一个基于此的一行


@谢谢你!也许我很幼稚,但这些答案告诉我如何构建嵌套字典(构建
容器
),但还没有告诉我如何向其写入
数据。也。。。一个班轮就好了!reduce的问题在于它只适用于接受两个参数的函数,
operator.setitem
需要3个参数(容器、索引、值)。我再从头开始……汤姆,你可以把这个问题的一行回答改成只使用
data
作为
reduce
functools.reduce的初始对象(lambda x,y:{y:x},path[::-1],data)
mazing@jdaz!为了使它适合这个问题,可以考虑添加
container=functools.reduce(…
是的,这是真的。我现在就添加它很好的改进!
import functools
path = ['foo','bar']
data = [1,2,3]
container = functools.reduce(lambda x,y:{y:x},path[:-1],{path[-1]: data})