使用列表推导从python中的列表字典中提取列表元素

时间:2017-01-18 05:48:05

标签: python list-comprehension

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

我需要

[1,2,3,4,5] 

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

4 个答案:

答案 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()。)