猿问

访问第二个最小的第二个元素的排序嵌套列表的第一个元素

我有一个嵌套的链表:

list_a = [[A, 12.1], [B, 15.6], [C, 9.8], [D, 12.1], [F, 96.3]]

sorted(list_a)根据子列表的第二个元素,我已经成功地使用 对列表进行了排序。如何获得输出 A 和 D(具有第二小的第二个元素的列表的第一个元素)?


侃侃无极
浏览 167回答 2
2回答

繁花如伊

这里不需要完整排序。您可以使用heap.nsmallest后跟列表理解:from heapq import nsmallestfrom operator import itemgetterlist_a = [['A', 12.1], ['B', 15.6], ['C', 9.8], ['D', 12.1], ['F', 96.3]]second_largest_val = nsmallest(2, map(itemgetter(1), list_a))[1]res = [key for key, val in list_a if val == second_largest_val]# ['A', 'D']

jeck猫

您可以使用以下条件列表理解:list_a = [['A', 12.1], ['B', 15.6], ['C', 9.8], ['D', 12.1], ['F', 96.3]]sorted_a = sorted(list_a, key=lambda x: x[1])[x for x, y in sorted_a if y == sorted_a[1][1]]# ['A', 'D']然而,这确实检查float对象的相等性,这并不理想。因此,您可能希望使用math.isclosePython >= 3.5 中可用的方法:from math import isclose[x for x, y in sorted_a if isclose(y, sorted_a[1][1])]# ['A', 'D']
随时随地看视频慕课网APP

相关分类

Python
我要回答