Een woordenboek sorteren op waarde

Jinku Hu 30 januari 2023 20 december 2019
  1. Python woordenboek sorteren op waarde - alleen de gesorteerde waarden ophalen
  2. Gebruiken operator.itemgetter om het Python-woordenboek te sorteren
  3. Gebruik de lambda functie in de toets sorted om Python in het woordenboek te sorteren
  4. OrderedDict om het woordenboek-compatibele resultaat te krijgen bij het sorteren van Python-woordenboeken
Een woordenboek sorteren op waarde

Python-woordenboek is een gegevenstype zonder bestelling, daarom kon u het Python-woordenboek niet sorteren op sleutels of waarden. Maar je zou de weergave van het gesorteerde Python-woordenboek kunnen krijgen in een ander gegevenstype zoals een lijst.

Stel dat we een woordenboek hebben zoals hieronder,

exampleDict = {'first': 3, 'second': 4, 'third': 2, 'fourth': 1}

Python woordenboek sorteren op waarde - alleen de gesorteerde waarden ophalen

sortedDict = sorted(exampleDict.values())
#Out: [1, 2, 3, 4]

Gebruiken operator.itemgetter om het Python-woordenboek te sorteren

import operator
sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items geeft het sleutel / waarde-paar woordenboekelementen terug. key=operator.itemgetter(1) geeft aan dat de vergelijkingssleutel de waarde van het woordenboek is, heeft ondertussen operator.itemgetter(0) de vergelijkingssleutel van de woordenboeksleutel.

Gebruik de lambda functie in de toets sorted om Python in het woordenboek te sorteren

Je zou ook kunnen lambda werken om de vergelijkingssleutel te krijgen in plaats van operator.itemgetter

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items() geeft een lijst met sleutel / waarde-paren van het woordenboek en het gegevenstype van het element is tuple. x is het element van dit tupel, waar x[0] is de sleutel en x[1] is de waarde. key=lambda x:x[1] geeft aan dat de vergelijkingssleutel de waarde van de woordenboekelementen is.

Optionele parameter reverse kan worden ingesteld True als de waarden in aflopende volgorde moeten worden gesorteerd.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
#Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

OrderedDict om het woordenboek-compatibele resultaat te krijgen bij het sorteren van Python-woordenboeken

De bovenstaande voorbeeldcode retourneert het resultaat als een lijst, maar niet als een woordenboektype. Als u het resultaat als woordenboek-compatibel type wilt behouden, is de OrderedDict introductie van Python 2.7 de juiste keuze.

from collections import OrderedDict
sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
#Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

Het OrderedDict is een Python- dict subklasse die de gebruikelijke methoden ondersteunt en ook de volgorde onthoudt waarin sleutels eerst worden ingevoegd.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Gerelateerde Artikelen - Python Dictionary