Lorsque vous travaillez avec des listes de tuples contenant à la fois des éléments de chaîne et des éléments entiers, les trier efficacement en fonction des valeurs entières peut être essentiel. Cet article explore une solution pour cette tâche de programmation courante.
Pour trier une liste de tuples en fonction de leur deuxième élément, qui est un entier, nous pouvons utiliser la fonction sorted() en Python. Cette fonction permet de personnaliser les critères de tri à l'aide de l'argument mot-clé clé.
L'argument clé prend une fonction en entrée, qui détermine comment les tuples doivent être comparés. Dans ce cas, nous souhaitons les comparer en fonction de leur deuxième élément. Nous pouvons définir une fonction personnalisée en utilisant la syntaxe lambda comme suit :
lambda x: x[1]
Cette fonction prend un seul tuple en entrée et renvoie son deuxième élément.
Maintenant, nous pouvons utiliser l'argument key dans sorted() pour spécifier cette fonction personnalisée comme règle de tri :
sorted([('abc', 121), ('abc', 231), ('abc', 148), ('abc', 221)], key=lambda x: x[1])
Cela renverra un nouveau liste contenant les tuples triés par ordre croissant par leur deuxième élément :
[('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]
Pour des performances optimales, pensez à utiliser Operator.itemgetter(1) au lieu de lambda x : x[1]. Operator.itemgetter est une fonction intégrée explicitement conçue pour extraire l'élément spécifié d'une structure de données, ce qui peut améliorer l'efficacité.
from operator import itemgetter sorted([('abc', 121), ('abc', 231), ('abc', 148), ('abc', 221)], key=itemgetter(1))
Cette approche permet d'obtenir le même résultat que l'utilisation de la fonction lambda mais peut être légèrement plus rapide dans certains cas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!