解压嵌套字典的单列表理解

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']

具有列表理解力。我想我需要一些方法来制作这个表达式 'legal':

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

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

您需要遍历字典的值:

>>> [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()