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
无需导入,您可以这样做:
>>> 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)