为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃无极 2021-08-05 16:41:24
我有一个嵌套的链表:list_a = [[A, 12.1], [B, 15.6], [C, 9.8], [D, 12.1], [F, 96.3]]sorted(list_a)根据子列表的第二个元素,我已经成功地使用 对列表进行了排序。如何获得输出 A 和 D(具有第二小的第二个元素的列表的第一个元素)?
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

这里不需要完整排序。您可以使用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']


查看完整回答
反对 回复 2021-08-05
?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以使用以下条件列表理解:


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


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信