5

我想在一行中写下 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)

我该怎么做?

4

4 回答 4

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]

这是一个嵌套列表推导。为了展示它是如何工作的,你可以把它分成几行来查看它的结构作为嵌套for循环。它从左到右。

[y 
 for x in d.values() 
 for y in x]
于 2013-04-12T08:13:03.610 回答
1
list(itertools.chain(*d.values()))

正如@jamylak 建议的那样,以下方法可能更有效,因为它避免了*操作员完成的完全解包:

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

在 python 2.x 中,使用.itervalues代替.values, 以避免不必要的列表复制。

于 2013-04-12T08:13:58.953 回答
1

怎么样

ll = []
for l in d.values(): 
    ll.extend(u)
于 2013-04-12T08:33:27.427 回答
0

使用运算符重载 -

sum(d.values(), [])
于 2013-04-12T08:25:09.073 回答