一个如何合并两个不相等的元组列表:
x = [('Animal', 1), ('Bird', 2)]
y = [('Animal', 'Dog'), ('Animal', 'Cat'), ('Bird', 'Parrot')]
..获得..
[('Animal', 1, 'Dog'), ('Animal', 1, 'Cat'), ('Bird', 2, 'Parrot')]
..使用列表理解吗?
答案 0 :(得分:4)
将x
变成字典以便于搜索,然后...
xx = dict(x)
[(k, xx[k], a) for k, a in y]
# => [('Animal', 1, 'Dog'), ('Animal', 1, 'Cat'), ('Bird', 2, 'Parrot')]
编辑:这是一个完全不同的问题。
[(k, n, a) for k, a in y for kk, n in x if kk == k]
# => [('Animal', 1, 'Dog'), ('Animal', 2, 'Dog'), ('Animal', 1, 'Cat'),
# ('Animal', 2, 'Cat'), ('Bird', 2, 'Parrot')]
您可以通过将x
转换成动物字典到数字列表来再次加快速度。