簡體   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