合并两个不等长的元组列表

时间:2018-09-04 08:39:51

标签: python python-3.x

一个如何合并两个不相等的元组列表:

x = [('Animal', 1), ('Bird', 2)]
y = [('Animal', 'Dog'), ('Animal', 'Cat'), ('Bird', 'Parrot')]

..获得..

[('Animal', 1, 'Dog'), ('Animal', 1, 'Cat'), ('Bird', 2, 'Parrot')]

..使用列表理解吗?

1 个答案:

答案 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转换成动物字典到数字列表来再次加快速度。