繁体   English   中英

单列表解析来解包嵌套字典

[英]single list comprehension to unpack nested dictionary

我想转过来

a = {'a': {'b': 'b aw', 'c': 'c aw'}, 'b': {'b': 'b2 aw', 'c': 'c2 aw'}, 'c': {}}

进入这个

['b aw', 'c aw', 'b2 aw', 'c2 aw']

列表理解。 我想我需要一些方法来使这个表达“合法”:

a2 = [a1 for a1 in a.values().values()]

我不想要dict(a.values)因为那只会让我回到原来的字典,a。 我知道有很多方法可以用for循环来做到这一点,但有没有办法在没有for循环的情况下做到这一点? 谢谢。

你需要循环你的dict值的值:

>>> [i for j in a.values() for i in j.values()]
['c aw', 'b aw', 'c2 aw', 'b2 aw']

使原始values表达的方法

[a1 for a1 in a.values().values()]

合法,就像这样:

import itertools

itertools.chain.from_iterable([v.values() for v in a.values()])

说明:内部列表是列表列表 - 与每个值对应的值。 itertools.chain.from_iterable使它变平。

你可以这样做:

a = {'a': {'b': 'b aw', 'c': 'c aw'}, 'b': {'b': 'b2 aw', 'c': 'c2 aw'}, 'c': {}}    
a2 = [a1 for a1 in a.values()]
a3 = [a3.values() for a3 in a2]
a3.sort()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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