
フィルタで内包表記を拡張する
Freeport
空港の変換済みフライトデータだけが必要であるとします。
あなたはおそらく、元の
for
ループに、
v
の現在値に基づいてフィルタリングする
if
文を
追加するでしょう。
just_freeport = {}
for k, v in flights.items():
if v == 'FREEPORT':
just_freeport[convert2ampm(k)] = v.title()
>>>
プロンプトで上のループを実行すると、
2
行のデータが表示されます(生データファイ
ルに含まれる
Freeport
への
2
便の定期便です)。
if
をこのように使ってデータをフィルタリ
ングする手法は標準的なので、これは驚くことではないはずです。実はこのようなフィルタ
を内包表記でも使えるのです。コロンを除いた
if
文を内包表記の最後に追加するだけです。
下は、前ページの最後の辞書内包表記です。
more_flights = {convert2ampm(k): v.title() for k, v in flights.items()}
これは同じ辞書内包表記のフィルタを追加したバージョンです。
just_freeport2 = {convert2ampm(k): v.title() for k, v in flights.items() if v == 'FREEPORT'}
>>>
プロンプトでこのフィルタ付きの辞書内包表記を実行すると、新たに作成した
just_
freepor2 ...