d = {'a':[1,2,3], 'b':[4,5]}
我需要
[1,2,3,4,5]
使用列表理解。我该怎么做?
答案 0 :(得分:5)
使用嵌套列表推导:
>>> [val for lst in d.values() for val in lst]
[1, 2, 3, 4, 5]
但您可能需要先对字典进行排序(因为dicts是无序的)以保证顺序:
>>> [val for key in sorted(d) for val in d[key]]
[1, 2, 3, 4, 5]
答案 1 :(得分:1)
使用列表理解的简单和单线程解决方案:
>>> sorted([num for val in d.values() for num in val])
[1, 2, 3, 4, 5]
答案 2 :(得分:1)
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())))
答案 3 :(得分:0)
如果元素的顺序不重要,那么你就无法击败它:
sum(d.values(), [])
(如有必要,请添加sorted()
。)