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

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