40のおっさんのPython学習記録

20年以上前、学部の必修のC言語が全く理解できずに同級生に放り投げ、その後コーディングから遠ざかったガチ文系のおっさんが、ふと思い立ってPythonに挑戦しています。

まだ全然コツがつかめない

ADDのくせに珍しくもくもく会や週末の好みのカフェ篭りを通じて、みんPyの章だけは進行しています。13章のうち11章目に突入しています。11章は標準ライブラリのあれこれを学ぶだけなのでリファレンス的に使えばいいのでもう新たな文法や記法をこの本で学ぶことはないようです。ただ、全くコーディングで自分のスキルが上がっていると思えないのには本当に凹むばかりです。例えば11章の初っ端の事例に複数のタプルを含むリストをディクショナリに変換するという事例が出てきます。

animals = [('猫','三毛'),('犬','柴'),('犬','秋田'),('猫','キジトラ'),('猫','黒')]
#上のタプルから下のディクショナリを作成
d={}                      #空のディクショナリを作成
for key, value in animals:
    if key not in d:      #キーがディクショナリに存在しない場合は追加
        d[key]=[value]
    else:               #キーが存在する場合は値を追加
        d[key].append(value)
print(d)
#{'猫': ['三毛', 'キジトラ', '黒'], '犬': ['柴', '秋田']}

from collections import defaultdict
dd = defaultdict(list) #空のリストを初期値に持つディクショナリを作成
for key, value in animals:
    dd[key].append(value)

print(dd)
#defaultdict(<class 'list'>, {'猫': ['三毛', 'キジトラ', '黒'], '犬': ['柴', '秋田']})

例えば上のコードで言えば、僕は未だにd[key]=[value]がどうして正しい記法なのかわかんないんですよ…数あるカッコの中で角カッコを使わねばならないとか、d[key]=[value]とすることで、辞書に追加の意味が付加されるとかの作法が本当にわからない。そもそもイコールでなんでつなぐの?もうマジで意味わかんない。だから僕ははるか昔、C言語で挫折したんですよ。
defaultdict(list)で殻のリストを初期値に持つディクショナリが出来るのが意味がわからない。list関数を入れる意味がわからない。
改めて思うんですよ。やっぱりいつか自然言語で要件定義すればプログラムが走るようになる時代は来るべきだと思います。