如何匹配Python中两个不同列表的第一个元素

时间:2017-05-23 08:06:43

标签: python python-3.x

我有两个这样的列表:

list1[(0,123),(1,456)]
list2[(0,'asd'),(2,'dsa'),(0,'eqw')]

我希望将两个列表中的两个列表合并到一个列表中,其中两个列表中的第一个元素匹配,例如,0中的list1可以在list2中找到,输出应该像< / p>

list3[(0,123,'asd','eqw')]

我试过这段代码,但似乎行不通:

out = [i for i,j in zip(list1, list2) if list1[0][0] == list[0][0]]

有人能给我任何解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用collections.defaultdict

>>> from collections import defaultdict
>>> list1 = [(0,123),(1,456)]
>>> list2 = [(0,'asd'),(2,'dsa'),(0,'eqw')]
>>> d = defaultdict(list)
>>> for k,v in list1+list2:
...     d[k].append(v)
... 
>>> d
defaultdict(<class 'list'>, {0: [123, 'asd', 'eqw'], 1: [456], 2: ['dsa']})
>>> d1, d2 = dict(list1), dict(list2)
>>> [(k,v) for k,v in d.items() if k in d1 and k in d2]
[(0, [123, 'asd', 'eqw'])]