3
L1 = ['A', 'B', 'C', 'D'] 
L2 = [('A', 10)], ('B', 20)]

これらの2つのリストから、共通の要素を生成するにはどうすればよいですか

output_list = [('A', 10), ('B', 20), ('C', ''), ('D', '')]

L1とL2を使用してoutput_listを取得するにはどうすればよいですか?

私は以下を試しました

  for i in L2:
    for j in L1:
       if i[0] == j:
           ouput_list.append(i)
       else:
           output_list.append((j, ''))

しかし、私は私が望む正確なものを取得していません

4

2 に答える 2

14

[(k, dict(L2).get(k, '')) for k in L1]

dict(L2)毎回再計算したくない場合 (たとえば、L2 が大きい場合) は、リスト内包表記から引き出すことができます。

d = dict(L2)
[(k, d.get(k, '')) for k in L1]
于 2012-06-04T06:49:33.417 に答える
2

リストの順序が正しく、L2 が常に短いか同じ長さであることが確実な場合:

from itertools import cycle
L2 + zip(L1[len(L2):], cycle(('',)))
于 2012-06-04T06:58:08.693 に答える