解压嵌套字典的单列表理解
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()
我想转这个
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()