Python for 辞書型

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

今日は、朝から何も食べていなかったので、昼食に大阪王将で餃子3人前とライスの大を食べたら、お腹いっぱいになりすぎて夕食が食べられませんでした。

これもある意味ダイエットになるんじゃないの?とおもって風呂上がりに体重計に乗ってみると、ダイエットどころか、普通に0.5kgほどいつもより増えていました。

やっぱりどか食いって良くないんですね。改めて規則正しい食生活を心がけないとだめだな〜と感じた次第です。

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

昨日の復習

昨日は、複数のリストからindex順に値を取り出すことができるzip関数を学習しました。

a = ('Sun', 'Mon', 'Tue', 'Wed')
b = ('apple', 'orange', 'banana', 'peach')
c = ('tea', 'coffee', 'water', 'milk')
 
for day, food, drink in zip(a, b, c):
	print(day, food, drink)

出力結果

Sun apple tea
Mon orange coffee
Tue banana water
Wed peach milk

エクセルで言うところの、縦横入れ替えてのペーストみたいな感じです。

また、変数に代入されている値の数、つまりindex数が違う場合は、一番少ないindexの数だけそれぞれの変数から値が取り出されて出力されました。

a = ('Sun', 'Mon', 'Tue', 'Wed')
b = ('apple', 'orange', 'banana')
c = ('tea', 'coffee')
 
for day, food, drink in zip(a, b, c):
	print(day, food, drink)

出力結果

Sun apple tea
Mon orange coffee

以前、リストのアンパッキングを学習しましたが、リスト(タプル)をアンパッキングして、順番に必要なものを組み合わせることができるのがzip関数ということです。

それでは、今日のPython学習を始めましょう。

辞書型をfor文で使う

for文は、リストやタプルの値を順番に取り出して変数に代入してくれますが、辞書型はkeyとvalueの2つの値が一組になっているので、通常のfor文の使い方ではどちらが取り出されるのか気になりますよね。

実際にやってみると結果は一目瞭然なので、とりあえずコードを書いてみましょう!

d = {'x': 100, 'y': 200, 'z':300}
for i in d:
    print(i)

出力結果

x
y
z

回答は予想どおり!?、keyが取り出されました。

こちらのPython学習23日目に紹介していますが、辞書型にはkeyを取り出すメソッドとvalueを取り出すメソッドがありました。

keysメソッドとvaluesメソッド

keyを取り出す場合とvalueを取り出す場合は次のようなコードになります。

d = {'x': 100, 'y': 200, 'z':300}
for i in d.keys():
    print(i)
 
for i in d.values():
    print(i)

出力結果

x
y
z
100
200
300

以前の学習では登場しませんでしたが、keyとvalueを一緒に取り出すメソッドが【items()】になります。

itemsメソッド

辞書型でkeyとvalueを一緒に取り出して出力するには、forのあとに指定する変数を2つ指定して、items()で値を引き渡す形になります。

d = {'x': 100, 'y': 200, 'z':300}
for k, v in d.items():
    print(k, v)
 
#itemsで何を取り出してるか出力してみる
print(d.items())

出力結果

x 100
y 200
z 300
dict_items([('x', 100), ('y', 200), ('z', 300)])

for文で変数を2つ指定しているので、ネストされたリストの中のタプルの値をそれぞれの変数に代入するループをindex数だけ実行しています。

itemsメソッドで取得される値は、辞書型のアイテムで、タプル化されたkeyとvalueがリストになった値でした。

先に紹介したkeyとvalueを取り出す場合の【d.keys()】と【d.values()】は、それぞれ次のような値が出力されます。

dict_keys(['x', 'y', 'z'])
dict_values([10, 20, 30])

メソッドや関数は、実際にどのような値が渡されているのか確認する場合は、print出力してみると一目瞭然です。

デバッグでも流れを掴むことができますが、print出力によって、どんな値が取り出されているのかを確認することで、よりコードの流れがわかり、理解が進むので、どうなってるのか分かりづらいときは、関数やメソッドをprint出力してみてください。

アンパッキングの復習

forループでの出力が、タプルのアンパッキングに似ているような感じもするので、keys(),values(),items()を使ったアンパッキングを復習してみることにします。

d = {'x': 100, 'y': 200, 'z':300}
a, b, c = d.keys()
print(a, b, c)
 
e, f, g = d.values()
print(e, f, g)
 
i, j, k = d.items()
print(i, j, k)

出力結果

x y z
100 200 300
('x', 100) ('y', 200) ('z', 300)

それぞれ順に、key、value、keyとvalueがタプル化された値がアンパッキングされて取り出されました。

このように、過去に学習した内容を復習することは大切で、忘れかけていたことを思い出すことができます。

あれってどうだったっけな〜?

と思った場合は、しっかりと振り返って復習するようにしましょう!

使えるものを増やす

一つのことを学習したら、一つで終わるのではなく、学習したことに紐付いた関数やメソッドを一つか2つ余分に調べるようにしましょう。

余分に調べることで学習の幅が広がりますし、学ぶべきことが増えていきます。もちろん復習も大切です。

学習に終わりがないように、Python学習も終わりはありませんし、学び続けることでスキルは向上していきます。

まだまだ、これらのピースがどのようにつながって、どんなことができるのか、ぼんやりとも見えていませんが、点が線につながり、最後には一つの作品になるように、今はしっかりと土台になる【ピース】を積み上げていきたいと思います。

それでは、明日もGood Python!