Jak sortować listy i słowniki w Pythonie

Sortowanie jest podstawową operacją w programowaniu, umożliwiającą uporządkowanie danych w żądanej kolejności. Python zapewnia solidne narzędzia do sortowania list i słowników, ułatwiając wydajne manipulowanie danymi. W tym artykule przyjrzymy się sposobom sortowania list i słowników w Pythonie, w tym różnym metodom i przykładom.

Sortowanie list

Listy są jedną z najczęściej używanych struktur danych w Pythonie. Możesz sortować listy za pomocą wbudowanej metody sort() lub funkcji sorted(). Oto jak działa każda z metod:

Używanie sort()

Metoda sort() sortuje listę w miejscu, co oznacza, że ​​modyfikuje oryginalną listę i nie zwraca nowej listy. Domyślnie sortuje w kolejności rosnącej.

# Example: Sorting a list in ascending order
numbers = [4, 2, 9, 1, 5]
numbers.sort()
print(numbers)  # Output: [1, 2, 4, 5, 9]

# Example: Sorting a list in descending order
numbers = [4, 2, 9, 1, 5]
numbers.sort(reverse=True)
print(numbers)  # Output: [9, 5, 4, 2, 1]

W powyższych przykładach metoda sort() sortuje listę numbers najpierw w kolejności rosnącej, a następnie w kolejności malejącej, korzystając z parametru reverse=True.

Używanie sorted()

Funkcja sorted() zwraca nową posortowaną listę i nie zmienia oryginalnej listy. Pozwala również określić kolejność sortowania za pomocą parametru reverse.

# Example: Using sorted() to get a new sorted list
numbers = [4, 2, 9, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Output: [1, 2, 4, 5, 9]
print(numbers)  # Output: [4, 2, 9, 1, 5] (original list is unchanged)

# Example: Using sorted() to get a new sorted list in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # Output: [9, 5, 4, 2, 1]

Tutaj sorted() zwraca nową listę sorted_numbers bez zmiany oryginalnej listy numbers. Możesz również sortować w kolejności malejącej za pomocą parametru reverse=True.

Sortowanie słowników

Sortowanie słowników polega na sortowaniu słownika według kluczy lub wartości. W przeciwieństwie do list, słowniki są z natury nieuporządkowane aż do Pythona 3.7, gdzie zaczęto zachowywać kolejność wstawiania. Oto, jak można sortować słowniki:

Sortowanie według kluczy

Aby posortować słownik według kluczy, należy użyć funkcji sorted() w połączeniu ze słownikowymi wyrażeniami składniowymi lub pętlami.

# Example: Sorting a dictionary by keys
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_keys = {key: data[key] for key in sorted(data)}
print(sorted_by_keys)  # Output: {'apple': 4, 'banana': 3, 'orange': 2}

W tym przykładzie słownik data jest sortowany według kluczy, co skutkuje utworzeniem nowego słownika sorted_by_keys, w którym klucze są uporządkowane rosnąco.

Sortowanie według wartości

Aby posortować słownik według jego wartości, możesz użyć funkcji sorted() na elementach słownika, a następnie utworzyć nowy słownik.

# Example: Sorting a dictionary by values
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_values = dict(sorted(data.items(), key=lambda item: item[1]))
print(sorted_by_values)  # Output: {'orange': 2, 'banana': 3, 'apple': 4}

Tutaj data.items() zwraca listę krotek, a sorted() służy do sortowania tych krotek według drugiego elementu (wartości) za pomocą funkcji lambda. Rezultatem jest nowy słownik sorted_by_values z wartościami w kolejności rosnącej.

Wniosek

Sortowanie list i słowników w Pythonie jest proste i skuteczne dzięki metodzie sort() i funkcji sorted() dla list oraz różnym technikom dla słowników. Zrozumienie tych metod pomoże Ci zarządzać danymi i analizować je bardziej efektywnie. Eksperymentuj z tymi technikami sortowania, aby zobaczyć, jak można je zastosować w Twoich własnych projektach!