获取字典中的n个最大键、值

CAV*_*AVS 4 python dictionary python-3.x

number = 2
dct = {'a': 5,'b': 3,'c': 4}

for key,value in dct.items():
Run Code Online (Sandbox Code Playgroud)

我想检查字典中最大的值。支票取决于号码,因此在这种情况下,{'a':5, 'c':4}应该返回,因为号码是2。但是,如果数字为 1,则只{'a':5}应返回。我无法导入或使用 lambda

sty*_*ane 6

无需导入,您可以这样做:

>>> n = 2
>>> mydict = {'a': 5, 'b': 3, 'c': 4}
>>> {key: mydict[key] for key in sorted(mydict, key=mydict.get, reverse=True)[:n]}
{'a': 5, 'c': 4}
Run Code Online (Sandbox Code Playgroud)

列表理解等价于:

result = {}
for key in sorted(mydict, key=mydict.get, reverse=True)[:n]:
    result.update({key: mydict[key]})
Run Code Online (Sandbox Code Playgroud)

如果多个键具有相同的值并且您想打破 n 最大规则,那么您需要使用set.

>>> mydict = {'a': 5, 'b': 3, 'c': 4, 'd': 4}
>>> {key: value for key, value in mydict.items() if value in sorted(set(mydict.values()), reverse=True)[:2]}
{'a': 5, 'c': 4, 'd': 4}
Run Code Online (Sandbox Code Playgroud)

您还可以使用 dict 理解来获取和关联的键。nlargest dict.values()

>>> import heapq
>>> n = 2
>>> mydict = {'a': 5, 'b': 3, 'c': 4}
>>> {key: value for key, value in mydict.items() if value in heapq.nlargest(n, mydict.values())}
{'a': 5, 'c': 4}
Run Code Online (Sandbox Code Playgroud)