Wenn Sie mehrere Schlüssel in Python-Sortierung angeben

Ich werde den Unterschied zwischen list.sort () und sorted () nicht ansprechen. Es scheint, dass Sie so über die Spezifikation des zu sortierenden Schlüssels schreiben können. 2.7, vielleicht 3 und später.

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' }},
]

#Ein Sortierschlüssel
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}]


#Zwei oder mehr Sortierschlüssel
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}]

Ich schrieb später und bemerkte, dass Item Getter und Attr Getter nur dieselbe Hierarchie zu sehen scheinen, also zum Beispiel [{Buch: {}, Regal: {}}, {Buch: {}, Regal: {} }] Bei einer Struktur wie ist es meines Erachtens nicht möglich, solche Schlüssel für ein Buch und einen für ein Regal anzugeben. </ del> -> Sie können diese mit einem Taple angeben, ohne sie zu verwenden.

Recommended Posts

Wenn Sie mehrere Schlüssel in Python-Sortierung angeben
Sortieren Sie die Liste der Tupel in Python, indem Sie die aufsteigende / absteigende Reihenfolge mehrerer Schlüssel angeben
Blasensortierung in Python
Benutzerdefinierte Sortierung in Python3
Holen Sie sich mehrere maximale Schlüssel im Python-Wörterbuchtyp
Mehrfacher Regressionsausdruck in Python
Sortieren Sie den Pfad natürlich in Python
Absteigende Sorte mit Mongodb in Python
Achtung bei os.mkdir in Python
Vermeiden Sie mehrere Schleifen in Python
Sortieren nach Datum in Python
Extrahieren Sie mehrere Listenduplikate in Python
[Python] Mit Tkinter mehrere Fenster anzeigen
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
[Python] Sortierbar nach mehreren Bedingungen sortieren
Verhalten beim Auflisten in Python heapq
Sortieren Sie große Textdateien in Python
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Löschen Sie mehrere Elemente in der Python-Liste
Sortieren Sie nach Angabe der Bedingungen in CASTable
Bei Verwendung regulärer Ausdrücke in Python
Beim Schreiben eines Programms in Python
Seien Sie vorsichtig, wenn Sie den Standardargumentwert in der Python 3-Serie angeben
[Python] Sortieren
Python #sort
Behandeln Sie mehrere Python-Versionen in einem Jupyter
Was ist neu in Python 3.9 (2) -Sortierte nicht verteilte Diagramme in Python
Erstellen Sie ScriptableObject in Python, wenn Sie ADX2 erstellen
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Wenn Sie sich die Speichernutzung in Python 3 ansehen
Verarbeiten Sie mehrere Listen mit for in Python
Stuge Sort in Python 3 implementiert (Bubble Sort & Quick Sort)
Geschwindigkeitsvergleich bei der Suche mit mehreren Schlüsseln in Pandas (MultiIndex vs Others)
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
[Tipps] Leicht lesbares Schreiben beim Verbinden von Funktionen in Python
Quadtree in Python --2
Wenn der Codec das Byte nicht dekodieren kann, wird es in Python angezeigt
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Verwendung mehrerer Argumente bei der Parallelverarbeitung mithilfe der Mehrfachverarbeitung in Python
Metaanalyse in Python
Unittest in Python
Wenn ich matplotlib in Python versuche, heißt es'cairo.Context '.
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
Ein Memo, das ich in Python zusammengeführt habe
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
nCr in Python