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
Przykład
#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)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
#{klucz: wartosc for element in kolekcja if warunek}Więcej przykładów
#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()})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)})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
#- Wyrażenia listoweZwięzły sposób tworzenia list, zbiorów i słowników z innych kolekcji.
- dict.items()Zwraca widok par (klucz, wartość), najwygodniejszy sposób na pętlę po słowniku.
- zip()Łączy kilka kolekcji w pary (lub krotki) odpowiadających sobie elementów.
- dict()Tworzy słownik z par klucz–wartość lub argumentów nazwanych.
- forPętla przechodząca po kolejnych elementach sekwencji lub innego obiektu iterowalnego.
Widzisz błąd albo brakuje przykładu? Napisz do nas.