根据第二个索引查找二维元组的k最小值

时间:2017-11-09 15:32:23

标签: python python-2.7 sorting

我需要根据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

我很感激您的解决方案

1 个答案:

答案 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)]