5 maximum values in a python dictionary

前端 未结 5 1297
温柔的废话
温柔的废话 2020-11-28 23:59

I have a dictionary like this:

A = {\'a\':10, \'b\':843, \'c\': 39,.....}

I want to get the 5 maximum values of this dict and store a new d

相关标签:
5条回答
  • 2020-11-29 00:03

    For Python 3

    import operator
    dict(sorted(A.items(), key=operator.itemgetter(1), reverse=True)[:5])
    
    0 讨论(0)
  • 2020-11-29 00:05

    No need to use iteritems and itemgetter. The dict's own get method works fine.

    max(A, key=A.get)
    

    Similarly for sorting:

    sorted(A, key=A.get, reverse=True)[:5]
    

    Finally, if the dict size is unbounded, using a heap will eventually be faster than a full sort.

    import heapq
    heapq.nlargest(5, A, key=A.get)
    

    For more information, have a look at the heapq documentation.

    0 讨论(0)
  • 2020-11-29 00:09

    Try this:

    dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
    
    0 讨论(0)
  • 2020-11-29 00:13

    You are close. You can sort the list using sorted [docs] and take the first five elements:

    newA = dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
    

    See also: Python Sorting HowTo

    0 讨论(0)
  • 2020-11-29 00:15

    You could use collections.Counter here:

    dict(Counter(A).most_common(5))

    Example:

    >>> from collections import Counter
    >>> A = {'a' : 1, 'b' : 3, 'c' : 2, 'd' : 4, 'e' : 0, 'f' :5}
    >>> dict(Counter(A).most_common(5))
    {'a': 1, 'c': 2, 'b': 3, 'd': 4, 'f': 5}
    
    0 讨论(0)
提交回复
热议问题