繁体   English   中英

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

[英]How to match the first element of two different list in Python

我有两个这样的清单:

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

我想将上面两个列表合并成一个,两个列表中的第一个元素都匹配,例如, list1 0可以在list2找到,输出应该像

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

我尝试了这段代码,但似乎不起作用:

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

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

您可以为此使用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'])]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM