Python列表中的元组

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, ''))

但我没有得到我想要的精确结果。


1
“common elements”是什么意思?是指位置、ASCII码(即升序/降序排序)等方面的共同点吗? - Lorenz Lo Sauer
2个回答

14

如果你不想每次重新计算L2(例如,如果L2很大),你可以将dict(L2)从列表推导式中提出来。

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

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

感谢BrenBarn,这就是我真正想要的。 - Asif

2

如果您确信列表的顺序正确,且L2始终较短或等长:

from itertools import cycle
L2 + zip(L1[len(L2):], cycle(('',)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接