繁体   English   中英

从键元组创建嵌套的Python字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM