[英]Create Nested Python Dictionary From Tuple of Keys
我有一个重复的键,例如('a', 'b', 'c')
,它们想要与正在构建的字典中的条目相对应。 我正在寻找一种从多个元组构建此字典的方式。
输入:
keys = ('a', 'b', 'c')
value = 'bar'
输出:
{'a': {'b': {'c': 'bar'}}}
我一直在尝试使用defaultdict,但是还没有真正掌握它。 单线需求非常软,但是我希望为此获得很小的占用空间。
您可以在此处使用reduce
1 :
reduce(lambda x, y: {y: x}, keys[::-1], value)
或者,使用reversed
返回的迭代器:
reduce(lambda x, y: {y: x}, reversed(keys), value)
很多人可能不太喜欢这个。 除非您真的很喜欢python中的函数式编程,否则这有点不透明。 一个更简单的解决方案只需要3行:
>>> keys = ('a', 'b', 'c')
>>> value = 'bar'
>>> for c in reversed(keys):
... value = {c: value}
...
>>> value
{'a': {'b': {'c': 'bar'}}}
并且不依赖任何模糊的内置函数。
FWIW,我不确定我喜欢哪个版本...
python3.x中的1 functools.reduce
也存在于python2.6 +中以缓解py3k转换IIRC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.