5

for ループを 1 行で書きたいと思います。

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 に答える