[英]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.