Wyrażenia słownikowe

Zwięzły sposób budowania nowego słownika przez przekształcenie lub filtrowanie innej kolekcji.

Zwraca
Nowy słownik.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
Python
names = ["Ania", "Kuba", "Ola"]
lengths = {name: len(name) for name in names}
print(lengths)

prices = {"HTML": 49, "Python": 79, "React": 99}
sale = {course: price * 0.5 for course, price in prices.items() if price > 50}
print(sale)
Wynikzapisany wynik, możesz go sprawdzić
{'Ania': 4, 'Kuba': 4, 'Ola': 3}
{'Python': 39.5, 'React': 49.5}

Definicja i zastosowanie

#

Wyrażenie słownikowe (dict comprehension) buduje słownik według wzoru {klucz: wartość for element in kolekcja}. Działa jak wyrażenie listowe, tylko zapisuje się je w nawiasach klamrowych, a klucz od wartości oddziela dwukropek.

Opcjonalny warunek if na końcu filtruje elementy. Źródłem może być dowolna kolekcja: lista, range(), pary z zip() albo items() innego słownika. Pozwala to przekształcać wartości, zamieniać klucze z wartościami czy wybierać tylko część wpisów.

Gdy dwa elementy dadzą ten sam klucz, w wyniku zostanie wartość z ostatniego z nich, bez żadnego ostrzeżenia. Przy odwracaniu słownika z powtarzającymi się wartościami część danych po prostu zniknie.

Składnia

#
Składnia
{klucz: wartosc for element in kolekcja if warunek}

Więcej przykładów

#
Zamiana kluczy z wartościami
Python
codes = {"pl": "polski", "en": "angielski"}
print({name: code for code, name in codes.items()})

grades = {"Ania": 5, "Kuba": 4, "Ola": 5}
print({grade: name for name, grade in grades.items()})
Wynikzapisany wynik, możesz go sprawdzić
{'polski': 'pl', 'angielski': 'en'}
{5: 'Ola', 4: 'Kuba'}
Słownik z dwóch list i z zakresu
Python
courses = ["HTML", "CSS", "Python"]
modules = [11, 9, 12]

print({course: count for course, count in zip(courses, modules)})
print({n: n ** 2 for n in range(1, 5)})
Wynikzapisany wynik, możesz go sprawdzić
{'HTML': 11, 'CSS': 9, 'Python': 12}
{1: 1, 2: 4, 3: 9, 4: 16}

Dobre praktyki

#
  • Do zwykłego połączenia dwóch list wystarczy dict(zip(klucze, wartosci)). Wyrażenie słownikowe przydaje się, gdy po drodze chcesz coś przekształcić albo odfiltrować.
  • Uważaj na powtarzające się klucze: ostatnia wartość nadpisuje wcześniejsze bez ostrzeżenia.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.