Skip to main content
 首页 » 编程设计

python之使用 python 在列表中查找唯一的最大值

2025年05月04日9txw1958

我有如下所示的点列表

points=[ [x0,y0,v0],  [x1,y1,v1],  [x2,y2,v2].......... [xn,yn,vn]] 

一些点有重复的 x,y 值。我要做的是提取唯一的最大值x,y点

例如,如果我有点 [1,2,5] [1,1,3] [1,2,7] [1,7,3]

我想获取列表[1,1,3] [1,2,7] [1,7,3]

我如何在 python 中执行此操作?

谢谢

请您参考如下方法:

例如:

import itertools 
 
def getxy(point): return point[:2] 
 
sortedpoints = sorted(points, key=getxy) 
 
results = [] 
 
for xy, g in itertools.groupby(sortedpoints, key=getxy): 
  results.append(max(g, key=operator.itemgetter(2))) 

即:按 xy 对点进行排序和分组,对于每个具有固定 xy 的组,选择具有最大 z 的点。如果您对 itertools 感到满意,这似乎很简单(你应该是,它真的是一个非常强大和有用的模块!)。

或者,您可以使用 (x,y) 元组作为键,z 列表作为值来构建一个字典,然后最后一次传递该字典以选择最大值z 用于每个 (x, y),但我认为排序和分组方法更可取(除非您有数百万个点,以便 big-O 性能我猜,出于可扩展性目的,排序会让您担心)。