我想在一行中写for循环:
d = {'a': [1, 2, 3], 'b': [5, 6, 7], 'c': [9, 0]}
my_list = []
for k, v in d.items():
for x in v:
my_list.append(x)
我该怎么做?
答案 0 :(得分:9)
>>> d = {'a': [1, 2, 3], 'b': [5, 6, 7], 'c': [9, 0]}
>>> [y for x in d.values() for y in x]
[1, 2, 3, 9, 0, 5, 6, 7]
这是一个嵌套的list comprehension。为了说明这是如何工作的,您可以将其分解为行,以将其结构视为嵌套的for
循环。它从左到右。
[y
for x in d.values()
for y in x]
答案 1 :(得分:1)
list(itertools.chain(*d.values()))
正如@jamylak建议的那样,以下内容可以更有效,因为它避免了*
运算符完成的解包:
list(itertools.chain.from_iterable(d.values()))
在python 2.x中,使用.itervalues
代替.values
,以避免不必要的列表复制。
答案 2 :(得分:1)
怎么样
ll = []
for l in d.values():
ll.extend(u)
答案 3 :(得分:0)
使用运算符重载 -
sum(d.values(), [])