Python 辞書内包表記

Python学習【365日チャレンジ!】61日目のマスターU(@Udemy11)です。

少し前に冷蔵庫が壊れてしまって、乾燥を抑え、凍らせない約-1℃で肉や魚をおいしく保存できる【特鮮氷温ルーム】が特徴の日立の冷蔵庫を購入しました。

表開きの場合は、さらにグレードの高い【真空チルド】というものがあったんですが、片開きに慣れていたことを理由に?!片開きの一番グレードの高いものを選んだら、【真空チルド】ではなく【特鮮氷温ルーム】だったんです。

そんな【特選氷温ルーム】も、これまではあまり活躍していなかったのですが、先日釣ってきたスズキを【特選氷温ルーム】で3日ほど寝かせたら、臭みはまったくなくて、甘みが出てきてめっちゃ美味しかったです。

またちょくちょく釣りに行こうかと思います。

それでは、今日もPython学習をすすめていきましょう!

昨日の復習

昨日は、辞書内包表記を学習しました。

k = ('Sun', 'Mon', 'Tue', 'Wed')
v = ('apple', 'banana', 'peach', 'orange')
 
d = {i: j for i, j in zip(k, v)}
print(d)

出力結果

{'Sun': 'apple', 'Mon': 'banana', 'Tue': 'peach', 'Wed': 'orange'}

リスト型内包表記とほぼ同じ使い方ができましたね。

違うのは、2つのタプルをzip関数で辞書型にして、辞書型の代入書式i: jにするところです。

もちろんカッコは、Bracesの波括弧です。

今日は、集合内包表記を学習しましょう!

集合内包表記

憶えていますか? 集合型データ。

複数の同じ値は一つのユニークな値にまとめてくれて、Bracesの波括弧{}でくくる値の集まりです。

辞書型のデータもBracesの波括弧を使うので、{}はデフォルトで辞書型と判断されてしまうため、空の集合型のみ、set()で記述しました。

その集合型データを複数の同じ値が入ったリストから集合型データを作ってみましょう。
(もちろん、こんな面倒なことをしなくても集合型にはできますが、あくまで集合内包表記のための一例としているだけです。)

l = [1, 1, 2, 1, 2, 3, 4, 3, 5, 4]
s = set()
for i in l:
    s.add(i)
 
print(s)

出力結果

{1, 2, 3, 4, 5}

同じ値を複数持ったリストをforループで回して空の集合sadd関数で代入していきます。

出力結果は重複する値はユニークにまとめられて集合型データが出来上がります。

これを集合内包表記で記述すると次のようになります。

l = [1, 1, 2, 1, 2, 3, 4, 3 ,5. 4]
 
s = {i for i in l}
print(s)

出力結果

{1, 2, 3, 4, 5}

if文も追加可能

もちろん、リスト内包表記でできたif文の追加も可能です。

l = [1, 1, 2, 1, 2, 3, 4, 3 ,5. 4]
 
s = {i for i in l if i % 2 == 1}
print(s)

出力結果

{1, 3, 5}

%は、商の余りですので、変数iを2で割った余りが1の場合、集合に加えるという表記になり、出力結果は{1, 3, 5}になります。

関連して覚える

リスト型、辞書型、集合型の内包表記を学習してきましたが、ほぼ同じような内容なので、関連して憶えておいたほうがいいでしょう。

Bracketの角括弧で囲ったり、 Bracesの波括弧でくくったり、keyとvalueを指定したり、ちょっとした違いでリスト型、辞書型、集合型に分かれるので、こんがらがらないように、何度も繰り返してコードを書くようにしましょう。

すでにPythonを60日学習してきましたが、酒井さんの講座の進捗状況は23%です。

残りは77%なので、単純計算で60日の3倍程度の180日はかかることになりますが、これからどんどん難しくなるので、一つのチャプターを理解するのにも時間がかかるかもしれません。

365日チャレンジなので、のんびりしながらもしっかりと理解度を深めていきたいと思います。

現在受講中の酒井さんの講座はこちらです。

Udemy講師 酒井さん プログラミング Python

それでは、明日もGood Python!