2017-09-28 1 views
0

Comment puis-je récupérer la clé dans le dictionnaire qui contient le nombre le plus élevé dans sa liste de valeurs?Le plus grand nombre dans les valeurs de dictionnaire

l = { 
'1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
'3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
'5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
'4': [4, 1, 2, 3, 5, 6], 
'7': [1, 2, 8, 3, 4, 5, 6, 7] 
} 

Dans cet exemple, la clé 5 contient une valeur 19, ce qui devrait être retourné

+3

Vous semblez manquer un peu de code dans la question. S'il vous plaît [modifier] votre question pour l'inclure –

Répondre

3

vous pouvez appliquer max sur les clés de dictionnaire converties en list (python 3), en utilisant une fonction clé qui retourne le maximum valeur de la list

l = {'1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
'3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
'5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
'4': [4, 1, 2, 3, 5, 6], 
'7': [1, 2, 8, 3, 4, 5, 6, 7]} 

print(max(list(l.keys()),key=lambda k:max(l[k]))) 

résultat: 5

EDIT: qui fonctionne, mais interroge inutilement la dict lors du calcul du maximum. Mieux vaut obtenir les paires clé + valeur et travailler sur la liste des tuple s. En fin de compte, prenez le premier élément. Devrait être un peu plus rapide (aucune recherche clé):

max(list(l.items()),key=lambda v:v[1][-1])[0] 
0

Vous pouvez essayer ceci:

l = { 
    '1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
    '3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
    '5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
    '4': [4, 1, 2, 3, 5, 6], 
    '7': [1, 2, 8, 3, 4, 5, 6, 7] 
} 
final_val = sorted(l.items(), key=lambda x: max(x[-1]))[-1][0] 
print(final_val) 

Sortie:

5