2014-11-11 11 views
6

My dict jest jakdruku najwyższa wartość w dict z kluczem

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

Chcę znaleźć maksymalną wartość z wartości klucza i min ze swoim kluczem.

wyjściowa będzie jak,

maksymalna: 87, klucz D

min: 0, klucz C

wiem jak uzyskać min i max wartości od dict. Czy istnieje sposób na zdobycie wartości i klucz w jednym komunikacie?

max([i for i in dic.values()]) 
min([i for i in dic.values()]) 
+0

Użyj wyrażenia lambda –

+1

Co powiesz na zduplikowane wartości? Czy chcesz obu/wszystkich kluczy? –

Odpowiedz

27

Można użyć wykorzystanie max i min z dict.get:

maximum = max(mydict, key=mydict.get) # Just use 'min' instead of 'max' for minimum. 
print(maximum, mydict[maximum]) 
# D 87 
+0

Nie sądzę, że to zadziała, – Hackaholic

+0

@hackaholic Wyjaśnij, dlaczego, chciałbym wiedzieć. –

+0

co jeśli D ma wartość Lowe niż A i C – Hackaholic

2

tylko:

mydict = {'A':4,'B':10,'C':0,'D':87} 
max(mydict.values()) 
min(mydict.values()) 

values daje listę wartości ze słownika. Funkcja max daje maksymalną wartość. min funkcja Minimalna wartość

i chcesz dostać klucz

+1

To nie spełnia specyfikacji pytania. Powinien znaleźć klucz o najwyższej wartości; nie największy klucz i największa wartość. –

3

Kluczem jest do pracy z elementami dict za (tj kluczykowy krotki pary wartości). Następnie, używając drugiego elementu pozycji jako klawisza "max()" (w przeciwieństwie do klucza dict), możesz łatwo wyodrębnić najwyższą wartość i powiązany z nią klucz.

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) 
Powiązane problemy