number = 2
dct = {'a': 5,'b': 3,'c': 4}
for key,value in dct.items():
我想要检查字典中最大的值。检查依赖于数字,所以在这种情况下应该返回{'a':5, 'c':4}
,因为数字是2
。但是如果数字是1,则只应返回{'a':5}
。我不能导入或使用lambda。
number = 2
dct = {'a': 5,'b': 3,'c': 4}
for key,value in dct.items():
我想要检查字典中最大的值。检查依赖于数字,所以在这种情况下应该返回{'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}
result = {}
for key in sorted(mydict, key=mydict.get, reverse=True)[:n]:
result.update({key: mydict[key]})
如果多个键具有相同的值,并且您想要打破 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}
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}
import heapq
number = 2
d={'a':5,'b':3,'c':4}
maximums = {k: d[k] for k in heapq.nlargest(number, d, key=lambda k: d[k])}
number = 2
d={'a':5,'b':3,'c':4}
{i[1]:i[0] for i in sorted(zip(d.values(), d.keys()), reverse=True)[:number]}
>>> number = 2
>>> dct = {'a': 5,'b': 3,'c': 4}
>>> lst = sorted([value for value in dct.values()],
reverse=True)[:number]
>>> result = {k: v for k, v in dct.items() if v in lst}
>>> result
{'a': 5, 'c': 4}
lst
中,您将获取一个按降序排列的dct
值列表,其索引位于number
以下。>>> lst
[5, 4]
dct
被过滤,其值在 lst
中。