我有两个元组列表
a = [('head1','a'),('head2','b'),('head3','x'),('head4','z')]
b = [('head5','u'),('head6','w'),('head7','x'),('head8','y'),('head9','z')]
我想取每个元组的第二个元素的交集,例如set{a[0][0],a[0][1],a[0][2],a[0][3]}
与列表a
和b
中的集合{b[0][0],b[0][1],b[0][2],b[0][3],b[0][4]}
的交集,这样如果交集值存在,它将返回元组的第一个元素映射。结果输出如下:
到目前为止,我已经试过了:
x = [(a[i][0],b[j][0]) for i in range(len(a)) for j in range(len(b)) if a[0][i] == b[0][j]]
但出现了一个错误IndexError: tuple index out of range
做这件事的正确和最快的方法是什么?在
可以将函数与生成器一起使用:
输出:
^{pr2}$您可以在python3中执行以下操作。从列表中创建dict,从两个dict中获取键的交集,在键处获取相应的值:
在Python2中,可以使用
set(da).intersection(db)
代替da.keys()&db.keys()
。在相关问题 更多 >
编程相关推荐