根据其他元组中的数据更改元组的值

问题描述

我有两个元组

sudo service apache2 restart

我如何基于元组的第一个值将它们合并在一起以获得类似的内容

A=[(1,Poland),(2,Canada),(3,Germany)]
B=[(1,16),20),54)]

我找到了This,但是这个答案是从2015年开始的,也许您知道更好的解决方案。我的数据最多为10/20元组,因此我们不会处理庞大的数据集

解决方法

如果在示例中总是对元组进行排序,那么这是一个简单的情况,您可以简单地使用zip

C = []
for a,b in zip(A,B):
    C.append(a[1],b[1])

#  or simply C = [(a[1],b[1]) for a,B)]

如果不能保证顺序(实际上使第一个数字成为必需),我将首先将一个列表转换为dict,然后简单地将两对匹配:

b_dict = dict(B)
C = []
for i,country in A:
    C.append((country,b_dict[i]))

#  or C = [(country,b_dict[i]) for i,country in A]

当然,这可能需要处理一些极端情况,但我将留给您。

,

这可能是一个解决方案。

[(x[1],y[1]) for y in B for x in A if x[0] == y[0]]
,

这似乎是pandas的问题。您可以将它们变成pandas.Series()对象或pandas.DataFrame(),并将元组的第一个数字作为索引。然后只需使用pandas.DataFrame.merge()按索引合并,您将获得三列数据框或系列。

或者,它必须是一个嵌套循环:

C = []
for i in A:
    for j in B:
        if i[0] == j[0]:
            C.append((i[1],j[1]))