Python 辞書内包表記

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

Python学習365日チャレンジ!をはじめてはや60日が経過しました。

期間にして2ヶ月ですが、あっという間だったような感じがする中で、まだPythonの入り口の段階で、学習内容が少ないなとも感じています。

ま〜、慌てず、焦らず、ゆっくりとPython学習を進めていきたいと思います。

昨日の復習

昨日は、リスト内包表記を学習しました。

t = (1, 2, 3, 4, 5)
l = []
for i in t:
    if i % 2 == 0:
        l.append(i)
print(l)

出力結果

[2, 4]

一つ飛ばしてしまいましたが、 forループでリストを作成するところを、リストの中に表記することで簡単にリストを作成することができました。

上記の例なら、

l = [i for i in t if i % 2 ==0]

で、リストlを作成して出力すれば、forループを使った場合と同じ結果を得ることができまました。

詳しくは、昨日の記事をご覧になってみてください。

それでは、本日のPython学習にはいります。

辞書内包表記

リスト内包表記に続いて学習するのは、辞書内包表記です。

昨日学習したリスト内包表記の辞書型版ということですね。

k = ('Sun', 'Mon', 'Tue', 'Wed')
v = ('coffee', 'tea', 'water', 'milk')
 
d = {}
for i, j in zip(k, v):
    d[i] = j
     
print(d)
 
d = {i: j for i, j in zip(k, v)}
print(d)

出力結果

{'Sun': 'coffee', 'Mon': 'tea', 'Tue': 'water', 'Wed': 'milk'}
{'Sun': 'coffee', 'Mon': 'tea', 'Tue': 'water', 'Wed': 'milk'}

2つのタプルを用意して、zip関数でまとめることで、辞書を作ることができますが、これも、辞書内包表記によって同じ結果を得ることが可能です。

ただ、これだけの処理なら、もっと簡単なやり方でできちゃうんですよね。

print(dict(zip(k, v)))

これだけで、2つのタプルをまとめて辞書型にすることができるんですよね。

2つの道を知ること

紹介している使い方はあくまで一例として、わかりやすい例えを使っているので、2つのタプルから辞書を作るのが目的ではなくて、こんな使い方が可能ですよということです。

つまり、2つのリストやタプルからkeyvalueの値を持った辞書を作るなら、dict(zip(変数1, 変数2)でできちゃうので、辞書型内包表記を使う必要はありません。

あくまで他の目的で使うときに、こんな使い方があるという説明なので、目的を間違えないようにしましょう。

出発地点と目的地がわかっていれば、どのような行程を選ぶかは実際に行動する人次第で、様々な行き方があります。

歩いていくもよし、車で行くもよし、電車でいってもかまいませんし、1日で行けるところを寄り道しながら、1週間かけて到達してもいいわけです。

ただ、1つの道だけでなく、2通り、3通りの道を知っていれば、行程の楽しみ方も増えていきます。

私自身、辞書内包表記が具体的にどのようなシーンで使われているのかわかりませんが、コードをたくさん目にする中で、ここに辞書内包表記が使われているんだとか、リスト内包表記みっけ!などと楽しみながらコードが理解できるようになればいいなと思います。

道は1つじゃなければいけないわけでも答えがあるわけでもないので、目的地にたどり着ける方法を以下に楽しめるかということが大切です。

もちろん、よりシンプルに、最短距離を進むほうがいいわけですが、経験できるうちは余分なことをたくさん吸収しておくことも重要ですね。

それでは、明日もGood Python!