Python 解包嵌套字典的单列表理解

Python 解包嵌套字典的单列表理解,python,list-comprehension,Python,List Comprehension,我想把这个转过来 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。我知道有很多方法可以使用

我想把这个转过来

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

使原始
表达式

[a1 for a1 in a.values().values()]
法律上,是这样的:

import itertools

itertools.chain.from_iterable([v.values() for v in a.values()])
说明:内部列表是一个列表列表-对应于每个值的值
itertools.chain.from\u 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()

谢谢你的建议。我需要更熟悉itertools。使用它来解包嵌套的dict.trigger={'yellow':{'next':'1/5/160','tomory':'1/5/161','today':'1/5/162'},'blue':{'next':'1/5/163','tomorday':'1/5/165','green':{'next':'1/5/166','tomorday':'1/5/167今天':'1/5/168','black':{'next':'1/5/169','明天':'1/5/170','今天':'1/5/171'}。{'i:0代表触发器中的j.values(),代表j.values()}给了我想要的输出:
{'1/5/160':0,'1/5/161':0,'1/5/162':0,'1/5/163':0,'1/5/164':0,'1/5/165':0,'1/5/166':0,'1/5/168':0,'1/5/1690''