Słowniki Pythona: struktury i mapy skrótów

Opanuj słowniki Pythona. Dowiedz się, jak przechowywać, pobierać i obsługiwać dane pary klucz-wartość. Poznaj wydajność i najlepsze praktyki dotyczące mapowań.

Spróbuj w Edytorze

Przegląd

Słowniki są prawdopodobnie najważniejszą i zoptymalizowaną strukturą danych w Pythonie. Słownik to modyfikowalny zbiór wartości danych przechowywanych w parach „klucz:wartość”. Jeśli wyobrazisz sobie słownik z prawdziwego świata, „klucz” to szukane słowo, a „wartość” to definicja. Taka struktura parowania sprawia, że ​​pobieranie, aktualizowanie i zarządzanie danymi relacyjnymi jest niezwykle wydajne.

Pod maską słowniki Pythona są zaimplementowane jako wysoce zoptymalizowane tabele skrótów (lub mapy skrótów). Oznacza to, że pobieranie wartości za pomocą jej klucza jest operacją o stałym czasie „O(1)”. Niezależnie od tego, czy słownik zawiera dziesięć, czy dziesięć milionów pozycji, Python może natychmiast przejść bezpośrednio do adresu pamięci wartości, bez konieczności przeglądania całej kolekcji.

Aby zdefiniować słownik, używasz nawiasów klamrowych `{}` z kluczami i wartościami oddzielonymi dwukropkami `:`. Klucze muszą być niezmiennymi typami (takimi jak ciągi znaków, liczby całkowite lub krotki), co oznacza, że ​​nie można używać listy jako klucza słownika. Wartościami mogą jednak być absolutnie dowolne — w tym listy, obiekty, a nawet głęboko zagnieżdżone słowniki, co czyni je idealnymi do reprezentowania struktur danych w stylu JSON.

Dostęp do wartości odbywa się za pomocą notacji nawiasowej (np. `użytkownik["nazwa"]`). Jeśli jednak klucz nie istnieje, podejście to zgłasza błąd „KeyError”, natychmiast wstrzymując wykonywanie programu. Aby napisać bezpieczniejszy kod, profesjonaliści używają metody `.get()` (np. `user.get("name")`), która w przypadku braku klucza zgrabnie zwraca wartość `None` lub niestandardową wartość domyślną, zapobiegając niepotrzebnym awariom.

Historycznie rzecz biorąc, słowniki Pythona były całkowicie nieuporządkowane. Jednakże od dniaPython 3.7 słowniki mają oficjalną gwarancję zachowania kolejności wstawiania. Oznacza to, że podczas iteracji po słowniku przy użyciu metod takich jak `.keys()`, `.values()` lub `.items()` elementy zostaną zwrócone w dokładnej kolejności, w jakiej zostały oryginalnie dodane do słownika, łącząc szybkość map skrótów z przewidywalnością list.

Dane wyjściowe kodu i wykonania

Tworzenie profilu konfiguracji użytkownika w dużym stopniu wykorzystującego zagnieżdżone pary klucz-wartość.

user = {
    "username": "coder123",
    "role": "admin",
    "active": True
}

user["last_login"] = "2026-04-10" # Adding a key
print(f"Username is {user['username']}")

# Iterating over key-value pairs
for key, value in user.items():
    print(f"{key}: {value}")
Wyjście terminala
Username is coder123
username: coder123
role: admin
active: True
last_login: 2026-04-10

Wdrażanie krok po kroku

  • Obsługa odpowiedzi JSON z interfejsów API REST
  • Mapowanie unikalnych identyfikatorów na duże obiekty danych
  • Przechowywanie parametrów konfiguracyjnych aplikacji

Często zadawane pytania

Co się stanie, jeśli spróbuję uzyskać dostęp do klucza, który nie istnieje?

Użycie notacji nawiasowej (użytkownik["nazwa"]) powoduje wyświetlenie błędu KeyError. Użyj user.get("name"), aby zamiast tego zwrócić None bez rzucania.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.