[英]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.