首页 > 解决方案 > 访问排序嵌套列表的第一个元素以获得第二小的第二个元素

问题描述

我有一个嵌套链表:

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

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

标签: pythonpython-3.xlistsorting

解决方案


这里不需要完整的排序。您可以使用heap.nsmallest后跟列表理解:

from heapq import nsmallest
from operator import itemgetter

list_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']

推荐阅读