Cursus
Sorteren is een fundamentele bewerking bij datamanipulatie, en dictionaries in Python vormen daarop geen uitzondering. Of we nu werken aan een complex data-analyseproject of een simpel script, begrijpen hoe je een dictionary efficiënt op waarde sorteert, kan enorm handig zijn.
In dit artikel zetten we de verschillende methoden uiteen om dictionaries in Python op hun waarden te sorteren, zodat we de juiste tools hebben om onze data te ordenen zoals nodig.
Het korte antwoord: hoe sorteer je een dictionary op waarde in Python
Om snel een dictionary op waarde te sorteren, kunnen we de ingebouwde functie van Python .sorted() gebruiken in combinatie met een lambda-functie. Deze methode is eenvoudig en efficiënt voor de meeste use-cases.
student_scores = {
'Alex': 88,
'Ben': 75,
'Cyrus': 93,
'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
print(sorted_by_values)
# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
Laten we nu een stap terug doen en Python-dictionaries begrijpen en waarom we ze soms moeten sorteren.
Wat zijn Python-dictionaries?
Python-dictionaries zijn een soort datastructuur die data opslaat in sleutel-waardeparen. Ze zijn zeer veelzijdig en bieden snelle opzoek-, invoeg- en verwijderbewerkingen. Hier is een eenvoudig voorbeeld:
student_scores = {
'Alex': 88,
'Ben': 75,
'Cyrus': 93,
'Denver': 85
}
# No expected output
In de dictionary hierboven zijn de namen van de studenten de sleutels, en hun scores zijn de waarden.
Dictionaries zijn nuttig in veel scenario’s, bijvoorbeeld wanneer we data efficiënt moeten opslaan en ophalen. Soms is het echter nodig om deze data op waarden in plaats van op sleutels te sorteren—bijvoorbeeld wanneer we studenten op hun scores willen rangschikken.
Hoe sorteer je een dictionary op waarde in Python
Laten we nu de functie .sorted() in Python van dichterbij bekijken en hoe je die specifiek gebruikt om dictionaries op waarde te sorteren.
Hoe sorteer je een dictionary op waarde met .sorted()
De functie .sorted() is een krachtig en flexibel hulpmiddel om te sorteren in Python. Om een dictionary op zijn waarden te sorteren, kunnen we een lambda-functie gebruiken om aan te geven dat er op de waarden van de dictionary gesorteerd moet worden.
student_scores = {
'Alex': 88,
'Ben': 75,
'Cyrus': 93,
'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
print(sorted_by_values)
# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
In dit voorbeeld geeft student_scores.items() een view-object terug dat een lijst van tupleparen met sleutel en waarde toont. De functie .sorted() sorteert deze paren op de waarden (item[1]), en dict() zet de gesorteerde lijst weer om naar een dictionary.
Hoe sorteer je een dictionary in aflopende of oplopende volgorde
Standaard sorteert de functie .sorted() in oplopende volgorde. Afhankelijk van de situatie kunnen we dit echter eenvoudig aanpassen naar aflopend of oplopend door de parameter reverse op True of False te zetten.
Hoe sorteer je een dictionary in oplopende volgorde
Zoals genoemd wordt een dictionary standaard in oplopende volgorde gesorteerd met de functie .sorted(). We kunnen ook oplopend sorteren door de parameter reverse op False te zetten.
sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)
# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
Hoe sorteer je een dictionary in aflopende volgorde
Als we in aflopende volgorde willen sorteren, kunnen we de parameter reverse op True zetten.
sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)
# Expected output:
# {'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}
Bonus: hoe sorteer je een dictionary op sleutel in Python
Hoewel dit artikel zich richt op sorteren op waarden, is het ook handig te weten hoe je een dictionary op zijn sleutels sorteert. Dit kan op vergelijkbare wijze met de .sorted()-functie.
sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)
# Expected output:
# {'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}
Voor aflopende volgorde zet je eenvoudigweg reverse=True:
sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)
# Expected output:
# {'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}
Conclusie
Een dictionary op zijn waarden sorteren in Python is een veelvoorkomende taak die je eenvoudig uitvoert met de functie .sorted(). Of we de data nu in oplopende of aflopende volgorde nodig hebben, het begrijpen van deze technieken maakt onze datamanipulatie taken eenvoudiger en efficiënter. Door deze sorteermethoden onder de knie te krijgen, zorgen we ervoor dat onze data consistent geordend is op de manier die voor ons het beste werkt.
FAQs
Q1: Kan ik een dictionary op waarden sorteren als de waarden strings zijn in plaats van getallen?
A1: Ja, we kunnen een dictionary op waarden sorteren, zelfs als de waarden strings zijn. De functie .sorted() zal de waarden alfabetisch sorteren in oplopende of aflopende volgorde, net zoals bij getallen.
Q2: Hoe kan ik een dictionary op waarden sorteren als die geneste dictionaries bevat?
A2: Om een dictionary met geneste dictionaries te sorteren, moeten we een aangepaste sorteerkfunctie definiëren die de relevante geneste waarden extraheert en vergelijkt. Dit vereist een complexere lambda-functie of een aparte functie voor de vergelijking.
Q3: Kan ik een dictionary op waarden in-place sorteren zonder een nieuwe dictionary te maken?
A3: Nee, dictionaries in Python zijn inherent ongeordende verzamelingen in versies vóór 3.7, en hoewel ze vanaf Python 3.7 de invoegvolgorde behouden, is er geen ingebouwde methode om ze in-place te sorteren. Een dictionary sorteren resulteert altijd in het maken van een nieuwe dictionary met de gewenste volgorde.
Q4: Wat is de tijdscomplexiteit van het sorteren van een dictionary op waarden in Python?
A4: De tijdscomplexiteit van het sorteren van een dictionary op waarden met de functie .sorted() is O(n log n), waarbij n het aantal sleutel-waardeparen in de dictionary is. Dit komt doordat .sorted() intern Timsort gebruikt, een hybride sorteeralgoritme met deze complexiteit.
Q5: Verandert het sorteren van een dictionary op waarden de originele dictionary?
A5: Nee, een dictionary op waarden sorteren met de functie .sorted() maakt een nieuwe dictionary. De originele dictionary blijft ongewijzigd.

