我需要根据python中的第二个索引找到k个最小的元组值,
例如,我有一个元组列表,其中包含一些点与修复点的距离,如:[('p1',12.5),('p2',3),('p4',1),('p5',16),('p6',15),...](from fixed point p0)
,我想根据距离找到k-最小值。
我的意思是这样的代码,在这里展示:Find the k smallest values of a numpy array
我很感激您的解决方案
答案 0 :(得分:4)
您可以使用heapq.nsmallest
,并将元组中的第二个元素指定为比较键:
from heapq import nsmallest
lst = [('p1',12.5),('p2',3),('p4',1),('p5',16),('p6',15)]
nsmallest(3, lst, key=lambda x: x[1])
# [('p4', 1), ('p2', 3), ('p1', 12.5)]