如何根据 if (Y, Z)
的条件从列表中删除重复的元组和(Z, Y)
是列表的一部分,那么我们只保留 Y < Z
的匹配项?
例如,如果我们从以下汽车 ID 对列表开始:
CarID1 = [(100, 500), (100, 600), (100, 700), (500, 100), (500, 200)],
那么我们应该删除 (500, 100
条目并结束:
CarID2 = [(100, 500), (100, 600), (100, 700), (500, 200)]
我尝试使用以下代码来获取唯一的元组,但它没有执行我所描述的操作。
y = np.unique(x, axis=0)
z = []
for i in y:
z.append(tuple(i))
最佳答案
使用字典,您可以在线性时间内完成它。
请注意,对于每个元组 (u,v)
我首先检查是否 (v,u)
已经存在,在这种情况下,我保留 u < v
的那个,否则插入字典中。
CarID1 = [(100, 500), (100, 600), (100, 700), (500, 100), (500, 200)]
d ={}
for (u, v) in CarID1:
if (v, u) in d:
d[(v,u)] = (u,v) if u < v else (v,u)
else:
d[(u,v)] = (u,v)
d.values()
#dict_values([(100, 500), (100, 600), (100, 700), (500, 200)])
关于python - 按条件删除重复的元组对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048331/