Jak sortować słownik według wartości w Pythonie
Dowiedz się, jak sortować słownik Pythona według jego wartości. Odkryj sortowanie za pomocą sorted(), niestandardowych wyrażeń lambda i tworzenia uporządkowanych struktur dyktowania.
Przegląd
Chociaż słowniki są tworzone głównie do szybkiego wyszukiwania przy użyciu unikalnych kluczy, często konieczne będzie sortowanie elementów słownika na podstawie ich wartości. Na przykład sortowanie uczniów według ocen z egzaminów, wyświetlanie listy produktów od najtańszego do najdroższego lub porządkowanie liczby słów według częstotliwości.
W Pythonie nie można bezpośrednio sortować słownika w miejscu, ponieważ standardowe struktury słowników nie obsługują metod porządkowania, takich jak listy. Zamiast tego standardowe podejście polega na pobraniu elementów słownika w postaci krotek przy użyciu metody `.items()`, posortowaniu tych krotek przy użyciu wbudowanej funkcji `sorted()` z niestandardowym kluczem sortowania, a następnie odbudowaniu słownika z posortowanych elementów.
Klucz sortowania to zazwyczaj funkcja lambda, która zwraca drugi element krotki (wartość słownikowa): `klucz=element lambda: element[1]`. OdPython 3.7+ standardowe słowniki zachowują kolejność wstawiania. Ponowne rzutowanie posortowanej listy krotek z powrotem do słownika przy użyciu konstruktora `dict()` zwraca czysty, posortowany słownik gotowy do iteracji.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje sortowanie słownika wyników testów według wartości w kolejności rosnącej i malejącej przy użyciu funkcji lambda.
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)
# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)
# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)
# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}Wdrażanie krok po kroku
- Wywołaj funkcję my_dict.items(), aby pobrać pary klucz-wartość w postaci listy krotek.
- Przekaż elementy słownika do funkcji sorted().
- Podaj klucz=lambda item: item[1], aby poinstruować funkcję sorted() o sortowaniu na podstawie wartości (drugi element każdej krotki).
- Przekaż Reverse=True jako opcjonalny argument, aby posortować elementy w kolejności malejącej.
- Odbuduj posortowany słownik, przekazując posortowaną listę krotek do konstruktora dict().
Często zadawane pytania
Co oznacza klucz=lambda pozycja: pozycja[1]?
Funkcja sorted() przekazuje każdy element sekwencji elementów (krotkę (klucz, wartość)) do funkcji lambda. item[1] wyodrębnia komponent wartości, nakazując Pythonowi posortowanie krotek według wartości.
Czy sortowanie słownika wpływa na szybkość wyszukiwania kluczy?
Nie, wyszukiwania kluczy pozostają średnio złożonością czasową O(1), ponieważ sortowanie zmienia tylko sekwencję iteracji, a nie podstawową strukturę tabeli skrótów.
Powiązane tematy
Dowiedz się, jak sortować listę w Pythonie za pomocą metody sort() i funkcji sorted(). Odkryj przykłady niestandardowego sortowania kluczy i odwrotnej kolejności.
Jak iterować po słowniku w PythonieDowiedz się, jak zapętlać lub iterować po słowniku Pythona. Odkryj metody pętli po kluczach, wartościach i parach klucz-wartość za pomocą przejrzystych, możliwych do uruchomienia przykładów.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Pętle Pythona
Dowiedz się, jak używać pętli Pythona do iteracji danych. Opanuj pętle for, pętle while, przerywaj, kontynuuj i pętluj najlepsze praktyki dzięki interaktywnym przykładom.
Ściągawka dotycząca metod słownika Pythona
Poznaj metody słownikowe Pythona. Kompletny przewodnik dotyczący wstawiania, pobierania, aktualizacji i sprawdzania par klucz-wartość.
Python kontra Ruby: skrypty, struktury internetowe i filozofia
Porównaj Pythona i Ruby. Poznaj subtelne różnice w ich filozofii, elegancji składni, frameworkach internetowych (Djangovs Rails) i stylach wykonania.