Skip to main content
 首页 » 编程设计

python之字典python中的第二个最大值

2025年05月04日14luoye11

我有一个像这样的普通字典:

A = {37:4783, 92:47834, 12:234234,....} 

我需要返回第二个最大值,第三个,等等。我正在尝试:

max(A, key=lambda x: x[1]) 

但我得到了这个错误:TypeError: 'float' object is unsubscriptable

我做错了什么?

谢谢

请您参考如下方法:

看起来这些键根本不相关。因此,您可以调用 sorted :

>>> A = {37:4783, 92:47834, 12:234234} 
>>> sorted(A.values(), reverse=True) 
[234234, 47834, 4783] 

你的代码

max(A, key=lambda x: x[1]) 

失败是因为遍历字典会产生它的键。因此,您实际上是在调用

max([37, 92, 12], key=lambda x:x[1]) 

如您所见, key 在这里没有任何意义; 37[1] 会抛出错误。如果您想按相应的值对键进行排序,请对字典 items 进行排序或在 lambda 函数中检索值(或通过 dict.get ):

>>> [k for k,v in sorted(A.items(), key=lambda item: item[1], reverse=True)] 
[12, 37, 92] 
>>> sorted(A, key=lambda k: A[k], reverse=True) 
[12, 37, 92] 
>>> sorted(A, key=A.get, reverse=True) 
[12, 37, 92] 

请注意,后者可能会更慢,因为您需要从字典中检索每个键(尽管在 Python 中字典访问是 really fast)。