Lors de la spécification de plusieurs clés dans le tri python

Je ne parlerai pas de la différence entre list.sort () et sorted (). Il semble que vous puissiez écrire ainsi sur la spécification de la clé à trier. 2.7, peut-être 3 et plus tard.

python2.7


from pprint import pprint

items = [
  {'id':2, 'book': {'type':'zassi', 'name': u'bbb' }},
  {'id':3, 'book': {'type':'manga', 'name': u'ccc' }},
  {'id':4, 'book': {'type':'zassi', 'name': u'ddd' }},
  {'id':1, 'book': {'type':'manga', 'name': u'aaa' }},
  {'id':5, 'book': {'type':'manga', 'name': u'eee' }},
]

#Une clé de tri
sorted_items = sorted(
  items,
  key = lambda x: x['id']
)
pprint(sorted_items)

#=>
#[{'book': {'name': u'aaa', 'type': 'manga'}, 'id': 1},
# {'book': {'name': u'bbb', 'type': 'zassi'}, 'id': 2},
# {'book': {'name': u'ccc', 'type': 'manga'}, 'id': 3},
# {'book': {'name': u'ddd', 'type': 'zassi'}, 'id': 4},
# {'book': {'name': u'eee', 'type': 'manga'}, 'id': 5}]


#Deux clés de tri ou plus
sorted_items = sorted(
  items,
  key = lambda x: (x['book']['type'], x['id'])
)
pprint(sorted_items)

#=>
#[{'book': {'name': u'aaa', 'type': 'manga'}, 'id': 1},
# {'book': {'name': u'ccc', 'type': 'manga'}, 'id': 3},
# {'book': {'name': u'eee', 'type': 'manga'}, 'id': 5},
# {'book': {'name': u'bbb', 'type': 'zassi'}, 'id': 2},
# {'book': {'name': u'ddd', 'type': 'zassi'}, 'id': 4}]

J'ai écrit plus tard et j'ai remarqué que le getter d'élément et le getter attr semblent ne regarder que la même hiérarchie, donc par exemple, [{book: {}, étagère: {}}, {livre: {}, étagère: {} }] Avec une structure comme, j'ai l'impression qu'il n'est pas possible de spécifier des clés comme celle-ci pour le livre et celle-ci pour l'étagère. </ del> -> Vous pouvez les spécifier avec une touche sans les utiliser.

Recommended Posts

Lors de la spécification de plusieurs clés dans le tri python
Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés
Tri à bulles en Python
Tri personnalisé en Python3
Obtenez plusieurs clés maximales dans le type de dictionnaire Python
Expression de régression multiple en Python
Trier naturellement le chemin en Python
Tri décroissant avec mongodb en python
Attention lorsque os.mkdir en Python
Évitez les boucles multiples en Python
Trier par date en python
Extraire plusieurs doublons de liste en Python
[Python] Afficher plusieurs fenêtres avec Tkinter
Précautions lors de l'utilisation de Pit avec Python
[Python] Tri itérable selon plusieurs conditions
Comportement lors de la liste dans Python heapq
Trier les gros fichiers texte en Python
Test statistique (test multiple) en Python: scikit_posthocs
Supprimer plusieurs éléments dans la liste python
Trier en spécifiant les conditions dans CASTable
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
Soyez prudent lorsque vous spécifiez la valeur d'argument par défaut dans la série Python 3
[Python] Trier
Python #sort
Gérez plusieurs versions de python en un seul jupyter
Nouveautés de Python 3.9 (2) - Tri des graphes non circulés dirigés en Python
Créer ScriptableObject en Python lors de la construction d'ADX2
Précautions lors du décapage d'une fonction en python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Lors de l'examen de l'utilisation de la mémoire dans Python 3
Traiter plusieurs listes avec for en Python
Mise en œuvre du tri Stuge dans Python 3 (tri à bulles et tri rapide)
Comparaison de vitesse lors de la recherche à l'aide de plusieurs clés dans les pandas (MultiIndex vs Others)
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python
Quadtree en Python --2
Lorsque le codec ne peut pas décoder l'octet apparaît en python
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Comment prendre plusieurs arguments lors d'un traitement parallèle à l'aide du multitraitement en python
Méta-analyse en Python
Unittest en Python
Quand j'essaye matplotlib en Python, il dit 'cairo.Context'
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
Un mémo que j'ai écrit un tri de fusion en Python
Précautions lors du traitement des structures de contrôle dans Python 2.6
nCr en python