Hur man sorterar en ordbok efter nyckel och värde i Python?

Apr 2, 2020 – 4 min read

Hej, alla. Idag ska jag ge korta tips om ordbokssortering i Python (Python3). Som vi alla vet är ordböcker till sin natur ordningslösa, men andra typer som list och tupel är det inte. Det är inte möjligt att sortera en ordbok, men vi kan göra en representation av en ordbok som är sorterad. Du behöver alltså en ordnad datatyp för att representera sorterade nycklar eller värden, vilket kommer att vara en lista – förmodligen en lista med tupler.

Dictionary in Python (Source)

Process för sortering av ordböcker

Som vi kan se i den första figuren är ordböcker i Python en uppsättning nyckel-värdepar där varje nyckel-värdepar kallas för ett objekt. Låt oss nu fokusera på huvudfrågan: Vi måste koncentrera oss på det viktigaste: ordböcker kan sorteras efter nycklar eller värden. Som det beskrivs i den andra figuren kan vi sortera keys(), values() och items() i en ordbok. Låt oss fokusera på att sortera efter values() först.

sortering av ordbok efter värde

Låt oss ha en ordbok som består av flera välkända organisationer som keys() och deras grundandeår som values(). Så vi vill ha en sorterad ordbok där de äldsta organisationsposterna kommer att vara det första elementet och den yngsta organisationen kommer att vara det sista.

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

Som vi kan se i ordboken är IBM den äldsta organisationen därför kommer den att vara den första nyckeln i den sorterade ordboken och Facebook kommer att vara den sista.

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)

Output:



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

Då vi sorterar d.items(), som är en lista med tupler där keys()är den första parametern och values() är den andra parametern för varje tupel. För att sortera listan med tupler har vi valt värdena, dvs. den andra parametern i varje tupel, som nyckel. I den första raden definieras nyckeln som en lambdafunktion där nyckelvärdet är den andra parametern för objekten. Denna sortering kommer att skapa en lista med sorterade tupler. vi kan bara göra det till en ordbok med hjälp av dict()-funktionen som visas i den tredje kodraden. Vi kan också vända sorteringen vilket i resultatet skapar en lista med tupler där den nyaste står först och den äldsta kommer att vara det sista objektet som anges i den andra raden i koden. Vi kan också spara det sorterade lexikonet till ett annat namn som visas ovan.

sortering av lexikon efter nyckel

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

Output:


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

Som vi vet att keys() här i lexikonet d är strängar så kommer sorteringen efter nyckeln att skapa en lista med tupelar i alfabetisk ordning i keys() för varje post och med hjälp av dict() funktionen bildas lexikonet. Vi kan också använda funktionen lambda för att definiera nyckeln vilket är nästan onödigt, jag har bara visat för att göra en jämförelse vid definitionen av nyckeln vid sortering.

Det var allt. Besök gärna min profil för att få fler berättelser om maskininlärning och dataanalys. Alla typer av förslag och kritik är mycket uppskattade. Här är mina tidigare berättelser baserade på en Graduate course offered by Inha University, Rep of Korea:

Förra berättelser:

Del-1: Grundläggande python och installation
Del-2: Kapitel-2: Pythons datastruktur – datatyp
Del-3: Kontrollsatser (slingor) i Python
Del:4: Python-funktioner & Moduler
Del:5: Schafer & DataCamp.
Del-6: Typerna & för maskininlärning
Del-7: Funktionsteknik för maskininlärning

Lämna ett svar

Din e-postadress kommer inte publiceras.