494
Rozdział 12.
Komprehencje słowników
Definiowanie komprehencji słownika
Przypomnij sobie przedstawiony wcześniej w tym rozdziale kod, który odczytywał dane z pliku
CSV i umieszczał je w słowniku o nazwie
flights
. Dane te były następnie przekształcane
w nowy słownik o nazwie
flights2
, w którym kluczami godziny odlotów zapisane
w formacie 12-godzinnym, a wartościami miejsca docelowe zapisane jak nazwy własne.
...
flights2 = {}
for k, v in flights.items():
flights2[convert2ampm(k)] = v.title()
...
Ten kod jest zgodny ze
„wzorcem komprehencji”.
Zmieńmy te trzy wiersze kodu w komprehencję słownika.
Zacznij od przypisania nowego, pustego słownika do zmiennej (którą nazwiemy
more_flights
).
more_flights = {}
Określ sposób, w jaki istniejące dane (znajdujące się w słowniku
flights
) mają być iterowane
za pomocą pętli
for
(pamiętaj przy tym, aby nie umieszczać na końcu znaku dwukropka).
more_flights = {for k, v in flights.items()}
Aby ukończyć komprehencję słownika, zdefiniuj relację łączącą klucze i wartości nowego słownika.
Przedstawiona w górnej części strony pętla
for
generuje klucz nowego słownika, przekształcając
klucz starego (zawierający godzinę odlotu w formacie 12-godzinnym) na format 24-godzinny za
pomocą funkcji
convert2ampm
. Związana z nią wartość powstaje z kolei w wyniku konwersji
wartości pochodzącej ze starego słownika na zapis nazw własnych przy użyciu metody
title
oferowanej przez obiekt łańcucha znakowego. Odpowiadająca tej pętli komprehencja słownika
może zrobić to samo, a relację podobnie jak w przypadku komprehencji list określa się tu
po
lewej stronie słowa kluczowego
for
. Zwróć tu uwagę na obecność dwukropka oddzielającego
nowy klucz od nowej wartości.
more_flights = {convert2ampm(k): v.title() for k, v in flights.items()}
1. Zacznij od nowego,
pustego słownika.
2. Iteruj po wszystkich kluczach
i wartościach wchodzących
w skład istniejących danych.
Zauważ, że NIE ma
tu dwukropka.
3. Powiąż skonwertowany klucz z odpowiadającą
mu wartością zapisaną jako nazwa własna
(i zwróć tu uwagę na zastosowanie dwukropka).
I oto ona: Twoja pierwsza komprehencja słownika. Śmiało, weź w obroty, aby przekonać się,
czy działa zgodnie z oczekiwaniami.

Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.