[Python-Dev] Behaviour of max() and min() with equal keys

Raymond Hettinger raymond.hettinger at gmail.com
Wed Sep 8 08:59:21 CEST 2010


On Sep 7, 2010, at 12:34 PM, Matthew Woodcraft wrote:

> In CPython, the builtin max() and min() have the property that if there
> are items with equal keys, the first item is returned. From a quick look
> at their source, I think this is true for Jython and IronPython too.
> 
> However, this isn't currently a documented guarantee. Could it be made
> so? (As with the decision to declare sort() stable, it seems likely that
> by now there's code out there relying on it anyway.)

That seems like a reasonable request.  This behavior has been around
for a very long time is unlikely to change.  Elsewhere, we've made
efforts to document sort stability (i.e. sorted(), heapq.nlargest(),
heapq.nsmallest, merge(), etc).

It is nice that min(it) parallels sorted(it)[0] and nsmallest(1, it).
The same goes for max(it) paralleling sorted(it,reverse=True)[0]
and nlargest(1, it).


Raymond



More information about the Python-Dev mailing list