首页 > 解决方案 > python中重复坐标的属性总和

问题描述

我正在浏览我的坐标数据,由于某些预处理,我看到一些具有不同参数的重复坐标。我希望能够合并匹配坐标对应的属性并得到简化的结果。为了澄清我的意思是一个例子:

X = [1.0, 2.0, 3.0, 2.0]
Y = [8.0, 3.0, 4.0, 3.0]
A = [13, 16, 20, 8]

上述数据读取如下:点(1.0, 8.0)的值为13,(2.0, 3.0)的值为16。注意第二点和第四点坐标相同但属性值不同。我希望能够从坐标列表中删除重复项并对属性求和,因此结果将是新列表:

New_X = [1.0, 2.0, 3.0]
New_Y = [8.0, 3.0, 4.0]
New_A = [13, 24, 20]

24 是坐标相同的第二点和第四点的 16 和 8 之和,因此保留一个点并将值相加。

我不知道如何做到这一点,我想过使用嵌套的坐标拉链循环,但我不知道如何制定它来总结属性。

任何帮助表示赞赏!

标签: pythonpython-3.xlist

解决方案


我认为维护 3 个列表有点尴尬。就像是:

D = dict()
for x,y,a in zip(X,Y,A):
    D[(x,y)] = D.get((x,y),0) + a

会把所有东西放在一个地方。

如果您希望将其分解回 3 个列表:

for (x,y),a in D.items():
    newX.append(x)
    newY.append(y)
    newA.append(a)

推荐阅读