Let's consider a sample dictionary of (key, value) pairs as follows:
dict1 = {'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28, 'g' : 90}
dict2 = {'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28}
Of all the values in the dictionary, 90 is the highest one, I need to retrieve the key corresponds to it.
What are the possible ways to get this done. Which is the efficient one and why ?
Note:
Keys and/or values are not in order for the dictionary. Program keeps adding new (key, value) pairs to the empty dictionary.
There might be more than one key for max(value)
Ex: dict1 above should return ['j', 'g']
dict2 above should return 'j'
a) If dict has only one key corresponds to max(value) then the result should be just a string (i.e. Key)
b) If dict has more than one key corresponds to max(value) then the result should be list of strings (i.e.keys).
解决方案
You can do:
maxval = max(dict.iteritems(), key=operator.itemgetter(1))[1]
keys = [k for k,v in dict.items() if v==maxval]