Jak posortować słownik według klucza i wartości w Pythonie?

Apr 2, 2020 – 4 min read

Witam wszystkich. Dzisiaj udzielę krótkich wskazówek na temat sortowania słowników w Pythonie (Python3). Jak wszyscy wiemy, słowniki są z natury nieuporządkowane, ale inne typy, takie jak lista i tuple nie są. Nie jest możliwe, aby posortować słownik, ale możemy zrobić reprezentację słownika, który jest posortowany. Więc potrzebujesz uporządkowanego typu danych, aby reprezentować posortowane klucze lub wartości, które będą listą – prawdopodobnie listą tuples.

Słownik w Pythonie (źródło)

.

Proces sortowania słowników

Jak widzimy na pierwszym rysunku słowniki w pythonie są zbiorem par klucz-wartość, gdzie każda para klucz-wartość jest zbiorem par klucz-wartość.wartości, gdzie każda para klucz-wartość jest nazywana elementem. Skupmy się teraz na głównym problemie: Słowniki mogą być sortowane według kluczy lub wartości. Jak widać na drugim rysunku, możemy sortować keys(), values() i items() słownika. Skupmy się na sortowaniu według values()najpierw.

sortowanie słownika według wartości

Miejmy słownik składający się z kilku znanych organizacji jako keys() i ich rok założenia jako values(). Chcemy więc mieć posortowany słownik, w którym najstarsze elementy organizacji będą pierwszym elementem, a najmłodsza organizacja będzie ostatnim.

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

Jak widzimy w słowniku d, IBM jest najstarszą organizacją stąd będzie pierwszym kluczem posortowanego słownika, a Facebook będzie ostatnim.

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)

Wyjście:



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

Ponieważ sortujemy d.items(), która jest listą krotek, gdzie keys() są pierwszym parametrem, a values() są drugim parametrem każdej krotki. Do sortowania listy krotek wybraliśmy wartości, tj. drugi parametr każdej krotki jako klucz. W pierwszej linii, klucz jest zdefiniowany jako lambdafunkcja, gdzie wartość klucza jest drugim parametrem elementów. Ten sort utworzy listę posortowanych krotek. możemy po prostu zrobić z niej słownik używając funkcji dict() jak pokazano w trzeciej linii kodu. Możemy również odwrócić sortowanie, co w rezultacie utworzy listę tupli z najnowszym na pierwszym miejscu, a najstarszy będzie ostatnim elementem, jak pokazano w drugiej linii kodu. Możemy również zapisać posortowany słownik pod inną nazwą, jak pokazano powyżej.

sortowanie słownika według klucza

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

Wyjście:


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

Jak wiemy keys() tutaj w słowniku d są ciągami znaków to sortowanie według klucza utworzy listę krotek w kolejności alfabetycznej w keys() każdej pozycji i używając funkcji dict() słownik zostanie utworzony. możemy również użyć funkcji lambda do zdefiniowania klucza, która jest prawie niepotrzebna, właśnie pokazałem, aby zrobić porównanie w definiowaniu klucza w sortowaniu.

To wszystko. Proszę odwiedzić mój profil, aby uzyskać więcej historii na temat uczenia maszynowego i analizy danych. Wszelkiego rodzaju sugestie i krytyka są wysoko cenione. Oto moje poprzednie historie oparte na kursie podyplomowym oferowanym przez Inha University, Rep. Korei:

Poprzednie historie:

Część 1: Podstawy Pythona i instalacja
Część 2: Rozdział 2: Struktura danych Pythona – typy danych
Część 3: Wyrażenia sterujące (pętle) w Pythonie
Część 4: Python Functions & Moduły
Część:5: Object-Oriented Programming in Python – Schafer & DataCamp.
Część-6: Rodzaje & procedur uczenia maszynowego
Część-7: Feature Engineering for Machine Learning

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.