2 votes

Trier une liste de dictionnaires en utilisant lambda

Alors j'ai une liste faite à partir d'un dictionnaire qui a la structure :

l = [('name1', {'prop1' : 1, 'prop2': 2}), ('name2', {'prop1' : 1, 'prop2': 2})]

Je veux trier la liste en fonction des valeurs de l'une des propriétés, en gros :

comparer l[0][1]['prop1'] à l[1][1]['prop1'] et ainsi de suite. Comment puis-je faire cela avec une simple fonction lambda ? Je pensais que ça serait :

l.sort(key = lambda x : [x][1]['prop1'])

Mais cela génère des erreurs de dépassement de plage.

0voto

Zaid Al Shattle Points 313
l = [('name1', {'prop1' : 2, 'prop2': 2}), ('name2', {'prop1' : 1, 'prop2': 2})]
print(sorted(l,key=lambda x: x[1]["prop1"]))

Sortie :

[('name2', {'prop1': 1, 'prop2': 2}), ('name1', {'prop1': 2, 'prop2': 2})]

Vous pouvez également utiliser sort() comme suit :

l = [('name1', {'prop1' : 2, 'prop2': 2}), ('name2', {'prop1' : 1, 'prop2': 2})]
l.sort(key=lambda x: x[1]["prop1"])
print(l)

Vous obtiendrez exactement la même sortie

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X