18

My dict is like,

{'A':4,'B':10,'C':0,'D':87}

I want to find max value with its key and min value with its key.

Output will be like ,

max : 87 , key is D

min : 0 , key is C

I know how to get min and max values from dict. Is there is any way to get value and key in one statement?

max([i for i in dic.values()]) 
min([i for i in dic.values()])
Nishant Nawarkhede
  • 8,234
  • 12
  • 59
  • 81

3 Answers3

58

You could use use max and min with dict.get:

maximum = max(mydict, key=mydict.get)  # Just use 'min' instead of 'max' for minimum.
print(maximum, mydict[maximum])
# D 87
anon582847382
  • 19,907
  • 5
  • 54
  • 57
14

The clue is to work with the dict's items (i.e. key-value pair tuples). Then by using the second element of the item as the max key (as opposed to the dict key) you can easily extract the highest value and its associated key.

 mydict = {'A':4,'B':10,'C':0,'D':87}
>>> max(mydict.items(), key=lambda k: k[1])
('D', 87)
>>> min(mydict.items(), key=lambda k: k[1])
('C', 0)
holdenweb
  • 33,305
  • 7
  • 57
  • 77
6

just :

 mydict = {'A':4,'B':10,'C':0,'D':87}
 max(mydict.items(), key=lambda x: x[1])
Hackaholic
  • 19,069
  • 5
  • 54
  • 72
  • 5
    This doesn't meet the specifications of the question. It is supposed to find the key with the highest value; not the greatest key and the greatest value. – anon582847382 Nov 11 '14 at 18:39