J'ai une liste de listes imbriquées:
e = [['Tina', 37.2], ['Harsh', 39], ['Harry', 37.21], ['Berry', 37.21], ['Akriti', 41]]
Comment trier par valeur numérique, alors que les noms «suivent» la «note»? Je pourrais utiliser dict, mais je pense que ça passe à côté.
3 Réponses :
e.sort(key=lambda item: item[1])
Vous pouvez trier la liste avec une clé personnalisée:
result = sorted(e, key = lambda x : x[1])
Dans votre exemple, Harry et Berry ont la même valeur.
Si vous voulez que les liens soient triés par nom, une variante des réponses que vous avez déjà obtenues serait quelque chose comme ceci:
e = [['Tina', 37.2], ['Harsh', 39], ['Harry', 37.21], ['Berry', 37.21], ['Akriti', 41]] e.sort(key=lambda x:(x[1], x[0])) print(e) #[['Tina', 37.2], ['Berry', 37.21], ['Harry', 37.21], ['Harsh', 39], ['Akriti', 41]]
Pourquoi pas simplement le plus simple lambda x: (x [1], x [0]) ?
Seulement parce que je n'y ai pas pensé :) Va éditer. Merci.