Array:当两行(在不同数组中)相等时,在新列中添加ID值



我是python的初学者。我有2个数组,3列(ID, X_coord, Y_coord)。在两个数组中,点的x和y对应不同的id。我的目标是添加一个列,并为相同的点分配相同的ID。

假设我们有:

a = [[1, 4500, 5000], [2, 4600, 5100], [3, 4700, 5200]]
b = [[3, 4500, 5000], [1, 4600, 5100], [2, 4700, 5200]]

我想获得类似的东西:

a_new = [[1, 1, 4500, 5000], [2, 2, 4600, 5100], [3, 3, 4700, 5200]]
b_new = [[3, 1, 4500, 5000], [1, 2, 4600, 5100], [2, 3, 4700, 5200]]
我不知道如何解决这个问题。我正在考虑根据x和y坐标对行进行排序,但我更愿意为每一行设置一个for和when循环",当第二行和第三行中的值相同时,设置(在第四列中)一个递增的值。

希望我解释的问题是详尽。

我希望我没理解错你的问题。要添加ID为(X, Y)第一次出现的新列,可以执行以下命令:

a = [[1, 4500, 5000], [2, 4600, 5100], [3, 4700, 5200]]
b = [[3, 4500, 5000], [1, 4600, 5100], [2, 4700, 5200]]
# create a temporary dictionary with IDs:
tmp = {}
for id_, x, y in a:
tmp[(x, y)] = tmp.get((x, y), id_)
# add new column to a and b
a = [[id_, tmp[(x, y)], x, y] for id_, x, y in a]
b = [[id_, tmp[(x, y)], x, y] for id_, x, y in b]
print(a)
print(b)

打印:

[[1, 1, 4500, 5000], [2, 2, 4600, 5100], [3, 3, 4700, 5200]]
[[3, 1, 4500, 5000], [1, 2, 4600, 5100], [2, 3, 4700, 5200]]

相关内容

最新更新