>>> votes ={}
>>> votes["maddy"]=6
>>> votes["katty"]=6
>>> votes
{'maddy': 6, 'katty': 6}
>>> print(max(votes.items(), key = lambda k:k[1]))
('maddy', 6)
>>> votes["jackie"]=1
>>> votes
{'maddy': 6, 'katty': 6, 'jackie': 1}
>>> votes["kavi"]=1
>>> votes
{'maddy': 6, 'katty': 6, 'jackie': 1, 'kavi': 1}
>>> print(min(votes.items(), key = lambda k:k[1]))
('jackie', 1)
>>>
我知道我们首先插入的具有最大值的任何项目都将被视为最大投票数,如下所示,但是如果我需要最大值作为 katty 键,值为 6 插入在具有相同值 6 的 maddy 键之后怎么办?
print(max(votes.items(), key = lambda k:k[1]))
('maddy', 6)
expected output is
Katty , 6
根据max
文档:
如果多个项目是最大的,则该函数返回遇到的第一个项目。
此外,您的代码还取决于.items()
. 在dict
保证自Python3.7插入顺序(阅读更多关于它在这里)。如果你的版本低于 3.7 并且你想保持元素插入顺序,你可以使用OrderedDict
.
如果要返回具有最大值/最小值的最新元素,可以在键中明确指定顺序:
In [1]: votes = {'maddy': 6, 'katty': 6}
In [2]: max(votes.items(), key=lambda x: x[1])
Out[2]: ('maddy', 6)
In [3]: max(enumerate(votes.items()), key=lambda x: (x[1][1], x[0]))
Out[3]: (1, ('katty', 6))
In [4]: max(enumerate(votes.items()), key=lambda x: (x[1][1], x[0]))[1]
Out[4]: ('katty', 6)
请注意,因为min
您需要否定 key 函数中的索引以检索最新元素。这是使具有索引的元素(例如,3 低于索引为 2 的元素)所必需的。在否定索引后,您将 -3 与 -2 进行比较,-3 将低于 -2,因此min
将返回具有更高索引的元素:
In [5]: votes = {'maddy': 6, 'katty': 6, 'a': 1, 'b': 1}
In [6]: min(enumerate(votes.items()), key=lambda x: (x[1][1], -x[0]))[1]
Out[6]: ('b', 1)
或者您可以颠倒项目的顺序:
In [7]: max(reversed(list(votes.items())), key=lambda x: x[1])
Out[7]: ('katty', 6)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句