2012-09-13 14 views
8

Otrzymano słownik d gdzie para kluczy kluczowych składa się z ciągu znaków jako klucza i liczby całkowitej jako wartości, chcę wydrukować ciąg znaków, gdzie wartość jest maksymalna .Wydrukuj klucz maksymalnej wartości w słowniku w pythonic sposób

Oczywiście mogę zapętlić się nad d.items(), zapisać maksimum i jego klucz i wyprowadzić go po pętli for. Ale jest tam więcej „pythonic” sposób tylko przy użyciu tylko max funkcję skonstruować jak

print max(...) 
+0

zależności od korzystania z dict Was może chcesz przełączyć klucz i wartość, mając całkowitą wartość ma klucz dstring ma wartość ... (Oczywiście możesz to zrobić, jeśli nigdy nie używasz klawisza ciąg ...) –

+3

Swappping klucz i wartość to * nie * dobry pomysł, ponieważ wartości mogą wcale nie być unikalne ... – halloleo

Odpowiedz

16
print max(d.keys(), key=lambda x: d[x]) 

lub nawet krócej (z komentarzem):

print max(d, key=d.get) 
+6

co powiesz na 'max (d, key = d.get)' – georg

+0

Oba wydają się działać! :-) Dzięki za to: podejrzewałem, że pyton może zaoferować zwięzły sposób na rozwiązanie tego problemu! - Jeśli chodzi o oba rozwiązania, druga wersja wydaje mi się łatwiejsza do zapamiętania. Czy ma jakieś zastrzeżenia w stosunku do pierwszego? – halloleo

+0

@halloleo Nie sądzę, że tak. 'keys()' jest po prostu zbędne, 'get' to metoda, której zachowanie różni się od' lambda' dla elementów nieobecnych w dyktafonie, co nie będzie miało miejsca w tym przypadku. –

Powiązane problemy