繁体   English   中英

使用列表理解从python中的列表字典中提取列表元素

[英]Extracting list elements from dictionary of lists in python using list comprehension

d = {'a':[1,2,3], 'b':[4,5]} 

我需要

[1,2,3,4,5] 

使用列表理解。 我该怎么做?

使用嵌套列表理解:

>>> [val for lst in d.values() for val in lst]
[1, 2, 3, 4, 5]

但是您可能需要首先对字典进行排序(因为字典是无序的)才能保证顺序:

>>> [val for key in sorted(d) for val in d[key]]
[1, 2, 3, 4, 5]

简单易行的清单解决方案:

>>> sorted([num for val in d.values() for num in val])
    [1, 2, 3, 4, 5]

sum(d.values(),[])有效,但性能不高,因为它为每个临时列表应用a = a + b

使用itertools.chain.from_iterable代替:

import itertools
print(list(itertools.chain.from_iterable(d.values())))

或排序版本:

print(sorted(itertools.chain.from_iterable(d.values())))

如果元素的顺序不重要,那么您将无法击败:

sum(d.values(), [])

(如有必要,添加sorted() 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM