sorting a dictionary

Alex Martelli aleax at aleax.it
Tue Feb 4 04:36:16 EST 2003


Laura Creighton wrote:
   ...
> This will work, but there may be faster ways.
> 
>>>> def get_highest(d):
> ...     l = []
> ...     for k in d.keys():
> ...             l.append([d[k], k])
> ...     l.sort()
> ...     return l[-1][1]
> ...

There's an O(N) solution -- sorting is O(N log N),
therefore the O(N) solution WILL be faster for
large-enough dictionaries.  For example:

def get_highest_in_linear_time(d):
    iterator = d.iteritems()
    maxkey, maxval = iterator.next()
    for curkey, curval in iterator:
        if curval>maxval: maxkey, maxval = curkey, curval
    return maxkey


Alex





More information about the Python-list mailing list