Hoe sorteer je een woordenboek op sleutel en waarde in Python?

2 apr 2020 – 4 min read

Hallo, Iedereen. Vandaag zal ik korte tips geven over het sorteren van woordenboeken in Python (Python3). Zoals we allemaal weten zijn woordenboeken inherent orderloos, maar andere typen, zoals lijsten en tupels zijn dat niet. Het is niet mogelijk om een woordenboek te sorteren, maar we kunnen wel een voorstelling maken van een woordenboek dat gesorteerd is. Je hebt dus een geordend gegevenstype nodig om gesorteerde sleutels of waarden weer te geven, en dat zal een lijst zijn – waarschijnlijk een lijst van tuples.

Woordenboek in Python (bron)

Proces van sorteren van woordenboeken

Zoals we in de eerste figuur kunnen zien zijn woordenboeken in python een verzameling van sleutel-waardeparen waarbij elk sleutel-waardepaar een item wordt genoemd. Laten we ons nu richten op het hoofdprobleem: Woordenboeken kunnen gesorteerd worden op sleutels of waarden. Zoals in de tweede figuur is aangegeven kunnen we keys(), values(), en items() van een woordenboek sorteren. Laten we ons eerst concentreren op het sorteren op values().

sorteren woordenboek op waarde

Laten we een woordenboek hebben dat bestaat uit een aantal bekende organisaties als keys() en hun oprichtingsjaar als values(). Wij willen dus een gesorteerd woordenboek hebben waarin de oudste organisatie-elementen het eerste element zijn en de jongste organisatie het laatste.

d = {"Apple": 1976, "Microsoft":1975, "Facebook":2004, "Sony":1946, "IBM":1911, "Amazon": 1994 }

Zoals wij in het woordenboek d kunnen zien, is IBM de oudste organisatie en daarom zal het de eerste sleutel van het gesorteerde woordenboek zijn en Facebook zal de laatste zijn.

print(sorted(d.items(), key = lambda kv:kv))
print(sorted(d.items(), key = lambda kv:kv, reverse = True))
print(dict(sorted(d.items(), key = lambda kv:kv)))
sort_d = dict(sorted(d.items(), key = lambda kv:kv))
print(sort_d)

Uitvoer:



{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}
{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}

Omdat we d.items() sorteren, is dat een lijst met tupels waarbij keys() de eerste parameter en values() de tweede parameter van elke tupel zijn. Om de lijst met tupels te sorteren hebben we de waarden, d.w.z. de tweede parameter van elke tupel, als sleutel gekozen. In de eerste regel wordt de sleutel gedefinieerd als een lambdafunctie waarbij de sleutelwaarde de tweede parameter van de items is. Deze sortering zal een lijst van gesorteerde tupels creëren. we kunnen er gewoon een woordenboek van maken met behulp van de dict() functie zoals weergegeven in de derde regel van de code. We kunnen de sortering ook omkeren, wat resulteert in een lijst van tupels met de nieuwste eerst en de oudste als laatste item, zoals aangegeven in de tweede regel van de code. We kunnen ook het gesorteerde woordenboek opslaan onder een andere naam zoals hierboven getoond.

sorteren woordenboek op sleutel

print(sorted(d.items()))
print(dict(sorted(d.items())))
print(dict(sorted(d.items(), key = lambda kv:kv)))
print(sorted(d.items(), reverse = True))

Uitvoer:


{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}
{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}

Zoals we weten dat de keys() hier in woordenboek d strings zijn dan zal het sorteren op de sleutel een lijst van tupels in alfabetische volgorde in de keys() van elk item creëren en met behulp van dict() functie wordt het woordenboek gevormd. We kunnen ook de functie lambda gebruiken om de sleutel te definiëren, wat bijna niet nodig is, ik heb net laten zien dat we een vergelijking kunnen maken bij het definiëren van de sleutel bij het sorteren.

Dat is het. Bezoek mijn profiel om meer verhalen over machinaal leren en data-analyse te krijgen. Elke vorm van suggesties en kritiek worden zeer op prijs gesteld. Hier is mijn vorige verhalen gebaseerd op een Graduate cursus aangeboden door Inha University, Rep of Korea:

Vorige verhalen:

Part-1: Basic python en installatie
Part-2: Hoofdstuk-2: Python Data Structure – Data Type
Part-3: Control Statements (Loops) in Python
Part:4: Python Functies & Modules
Deel:5: Object-georiënteerd programmeren in Python – Schafer & DataCamp.
Deel-6: De types & procedure van Machine Learning
Deel-7: Feature Engineering voor Machine Learning

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.