[英]python: flat list of dict values
我有一個像這樣的dicts
list
:
a = [ {'list':[1,2,3]}, {'list':[1,4,5]} ]
我試圖在list
鍵中獲得一組平面值,如{1,2,3,4,5}
。 什么是最快的方式?
你可以編寫一個循環:
result = set()
for row in a:
result.update(row['list'])
我認為它會合理地運作。
或者您可以簡單地使用集合理解 ,這將導致以下單行 :
result = {x for row in a for x in row['list']}
如果並非所有元素都包含'list'
鍵,則可以將.get(..)
與空元組一起使用(這將減少構建時間):
result = {x for row in a for x in row.get('list',())}
目前尚不清楚你對“最快”的定義是什么,但無論是速度還是行數我都會使用itertools和一個生成器的組合。
>>> import itertools
>>> a = [ {'list':[1,2,3]}, {'list':[1,4,5]} ]
>>> b = set(itertools.chain.from_iterable(x['list'] for x in a if 'list' in x))
請注意,我添加了一個警告,防止任何可能不包含'list'
鍵的元素; 你可以省略,如果你知道這將永遠是真的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.