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

现在从这两个列表中我如何生成公共元素

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 回答