假设您有一个这样的字典,但不一定按其值排序:d={a:2,k:2,c:11,f:17,e:84,y:86}
并且您想将值从大到小排序:order=sorted(d.values(),reverse=True)
这会给你:order=[86,84,17,11,2,2]
现在,让我们取最后两个元素:b=order[-2:]=[2,2]
检索 d
中与 b
中的值对应的键的 Pythonic 方法是什么? 在这种情况下,预期的结果是:ans=[a,k]
最佳答案
使用 key
的 sorted()
参数获取按值排序的键列表:
>>> d = {'a': 2, 'k': 2, 'c': 11, 'f': 17, 'e': 84, 'y': 86}
>>> sorted(d, key=d.get)[:2]
['a', 'k']
引用文档:
key specifies a function of one argument that is used to extract a comparison key from each element in iterable (for example,
key=str.lower
). The default value isNone
(compare the elements directly).
或者,(如果
n
很小)您可以使用 heapq.nsmallest
,这样可以避免对所有键进行排序:>>> from heapq import nsmallest
>>> nsmallest(2, d, key=d.get)
['a', 'k']
关于Python:对dict的值进行排序并提取与最后n个值对应的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488532/