2012-09-22 18 views
7

Eventuali duplicati:
Getting key with maximum value in dictionary?Finding valore più grande in un dizionario

Diciamo che ho un dizionario che si compone di chiavi intere e valori interi. Voglio trovare la chiave intera con il valore corrispondente più alto. C'è qualche metodo integrato per fare qualcosa del genere o devo implementare un qualche tipo di algoritmo di fusione/ordinamento?

+0

Già risposto a StackOverflow [qui] (http://stackoverflow.com/a/1747244/831878) –

+1

Hai cercato di trovare una risposta esistente? Vedi questo: http://stackoverflow.com/questions/268272/getting-key-with-maximum-value-in-dictionary - la soluzione è proprio questa: 'max (stats.iteritems(), key = operator.itemgetter (1)) ' – Tadeck

+0

max (stats, key = stats.itemgetter (1)) è il più votato da http://stackoverflow.com/questions/268272/getting-key-with-maximum-value-in-dictionary – jimifiki

risposta

39

Si può semplicemente utilizzare max

>>> x = {1:2, 3:6, 5:4} 
>>> max(x, key=lambda i: x[i]) 
3 

O semplicemente:

>>> max(x, key=x.get) 
3 
5

Ci sono metodi per farlo, e il modo preferito è quello di utilizzare questo:

import operator 

result = max(your_dict.iteritems(), key=operator.itemgetter(1))[0] 

nota, quello per le vostre esigenze operator.itemgetter(1) potrebbe essere sostituito da lambda x: x[1].

+0

Is c'è qualche vantaggio nell'usare 'your_dict.iteritems()' solo su 'your_dict'? – verdesmarald

+0

@verdesmarald: danno risultati diversi ('your_dict.iteritems()' restituisce qualcosa di diverso da 'your_dict'), quindi non sono confrontabili. – Tadeck

+0

Mi spiace, intendevo per questa particolare domanda, dove 'max (your_dict.iteritems()) [0]' dà lo stesso risultato di solo 'max (your_dict)'. – verdesmarald

Problemi correlati