[Python] Comment trier un dict dans une liste et une instance dans une liste

Le tri des listes est courant, mais voici comment trier les dict dans la liste et l'instance dans la liste. Toutes les sortes sont dans l'ordre croissant. Utilisez la fonction intégrée sorted dans sort.

Version Python confirmée

Si vous n'utilisez pas les classes de données standard de la bibliothèque, cela devrait fonctionner comme 3.6

dict in list

Dans le cas de dict in list, il est nécessaire de spécifier l'argument clé de la fonction triée. Vous pouvez utiliser lambda lors de la spécification de la clé et utiliser lambda x: x ['a'] comme fonction anonyme, mais selon le fonctionnaire, il semble qu'il soit plus rapide d'utiliser le getter d'élément de l'opérateur de bibliothèque standard (je ne l'ai pas vérifié, donc ce n'est rien. Je ne peux pas dire).

https://docs.python.org/ja/3/howto/sorting.html#operator-module-functions

Python fournit des fonctions d'accesseur rapides et faciles à utiliser. Le module opérateur a les fonctions itemgetter (), attrgetter () et methodcaller ().

from operator import itemgetter
person_list = [{'name': 'a', 'age': 4}, {'name': 'b', 'age': 3}, {'name': 'c', 'age': 10}, {'name': 'd', 'age': 2}, {'name': 'e', 'age': 1}]
sorted(person_list, key=itemgetter('age'))
[{'name': 'e', 'age': 1},
 {'name': 'd', 'age': 2},
 {'name': 'b', 'age': 3},
 {'name': 'a', 'age': 4},
 {'name': 'c', 'age': 10}]

instance in list

Comme pour dict in list, spécifiez les paramètres à trier dans l'argument clé de la fonction triée. Par exemple, utilisez la lettre attr.

Une fois que vous créez un dict dans la liste avec les sources, puis créez une instance avec la liste (map (...)), il n'y a pas de signification profonde. Je voulais juste faciliter les choses en détournant la liste de personne utilisée dans le dict dans la liste.

from dataclasses import dataclass
from operator import attrgetter

@dataclass
class Person:
    name: str
    age: int

sources = [{'name': 'a', 'age': 4}, {'name': 'b', 'age': 3}, {'name': 'c', 'age': 10}, {'name': 'd', 'age': 2}, {'name': 'e', 'age': 1}]
person_list = list(map(lambda x: Person(**x), sources))
sorted(person_list, key=attrgetter('age'))
[Person(name='e', age=1),
 Person(name='d', age=2),
 Person(name='b', age=3),
 Person(name='a', age=4),
 Person(name='c', age=10)]

Si vous souhaitez trier par ordre décroissant, définissez l'argument inverse de la fonction triée sur True.

Reference

Recommended Posts

[Python] Comment trier un dict dans une liste et une instance dans une liste
Comment utiliser is et == en Python
Comment effacer un taple dans une liste (Python)
Comment générer une séquence en Python et C ++
[Python] Comment trier les instances par variables d'instance
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment supprimer les éléments en double dans la liste Python 3
[Python] Comment utiliser la liste 1
Comment développer en Python
[Python] Comment afficher les valeurs de liste dans l'ordre
[Python] Comment faire PCA avec Python
Comment collecter des images en Python
Comment utiliser SQLite en Python
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Astuces utiles liées à la liste et aux instructions en Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Comment exécuter des commandes et des scripts shell externes en python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Comment obtenir l'accès par attribut et la conservation de l'ordre d'insertion dans Python dict
Comment stocker une fonction Python dans la valeur d'un dictionnaire (dict) et appeler la fonction en fonction de la clé
Comment empaqueter et distribuer des scripts Python
[Introduction à Python] Comment utiliser la classe en Python?
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Comment comparer des listes et récupérer des éléments communs dans une liste
Comment définir dynamiquement des variables en Python
Comment installer et utiliser pandas_datareader [Python]
Comment faire R chartr () en Python
[Itertools.permutations] Comment créer une séquence en Python
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python
Comment utiliser BigQuery en Python
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
Différence entre append et + = dans la liste Python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
python: Comment utiliser les locals () et globals ()
[ROS2] Comment décrire le remappage et les paramètres au lancement au format python
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
[Python] Comment calculer MAE et RMSE
Comment utiliser le zip Python et énumérer
Résumé de l'utilisation de la liste Python
Comment utiliser les expressions régulières en Python
Comment supprimer plusieurs positions (index) spécifiées dans une liste Python
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
Comment afficher Hello World en python
Comment écrire Ruby to_s en Python