新たな気づき(Chapter 9-2)
- key in dict_aで要素が辞書にあるかどうかわかるし、dict_a.get(key)だと要素があれば値が返り、何もなければ何も返らず、エラーにはならない。
- 東急線の路線名のリストを用意します。
>>> tokyu_lines=["toyoko","meguro","dento","oimachi","ikegami","tamagawa","kodomo"]
各路線の路線長のデータを用意します。
>>> tokyu_line_length=[24.2,11.9,31.5,12.4,10.9,5.6,3.4]
それをzipでつないで辞書にします。
>>> tokyu=dict(zip(tokyu_lines,tokyu_line_length)) >>> print(tokyu) {'toyoko': 24.2, 'meguro': 11.9, 'dento': 31.5, 'oimachi': 12.4, 'ikegami': 10.9, 'tamagawa': 5.6, 'kodomo': 3.4}
上に作った辞書の値だけをvalue()メソッドで取り出し、最長路線の路線長を出します。他にもminも適用可能。
>>> tokyu.values() dict_values([24.2, 11.9, 31.5, 12.4, 10.9, 5.6, 3.4]) >>> max(tokyu.values()) 31.5
路線名だけをkeys()メソッドで抜き出し、世田谷線を入れ忘れていたのに気づいて加えます。
>>> tokyu.keys() dict_keys(['toyoko', 'meguro', 'dento', 'oimachi', 'ikegami', 'tamagawa', 'kodomo']) >>> tokyu["setagaya"]=5.0 >>> print(tokyu) {'toyoko': 24.2, 'meguro': 11.9, 'dento': 31.5, 'oimachi': 12.4, 'ikegami': 10.9, 'tamagawa': 5.6, 'kodomo': 3.4, 'setagaya': 5.0}
路線名を全て小文字にしてしまっていたので内包表記を利用して大文字にします。
>>> tokyu_keys=[key.capitalize() for key in tokyu] >>> tokyu_keys ['Toyoko', 'Meguro', 'Dento', 'Oimachi', 'Ikegami', 'Tamagawa', 'Kodomo', 'Setagaya']
items()メソッドを利用するとキーと値で構成されるタプルで構成されるdict_items型データに変換でき、これをlist()関数でリストに変換するとその後の利用がし易い。
>>> tokyu.items() dict_items([('toyoko', 24.2), ('meguro', 11.9), ('dento', 31.5), ('oimachi', 12.4), ('ikegami', 10.9), ('tamagawa', 5.6), ('kodomo', 3.4), ('setagaya', 5.0)]) >>> list(tokyu.items()) [('toyoko', 24.2), ('meguro', 11.9), ('dento', 31.5), ('oimachi', 12.4), ('ikegami', 10.9), ('tamagawa', 5.6), ('kodomo', 3.4), ('setagaya', 5.0)]
dict_items型でfor-inを利用するとキーと値を取り出して利用しやすい。
>> for key,value in tokyu.items(): ... print(f"{key} line's length is {value}km") ... toyoko line's length is 24.2km meguro line's length is 11.9km dento line's length is 31.5km oimachi line's length is 12.4km ikegami line's length is 10.9km tamagawa line's length is 5.6km kodomo line's length is 3.4km setagaya line's length is 5.0km
やっぱり鉄道線に限ったリストにしたいのでpop()メソッドを利用して世田谷線は削除します。
>>> tokyu.pop("setagaya") 5.0 >>> tokyu {'toyoko': 24.2, 'meguro': 11.9, 'dento': 31.5, 'oimachi': 12.4, 'ikegami': 10.9, 'tamagawa': 5.6, 'kodomo': 3.4}
popitem()はランダムに要素を取り出し、元の辞書からは削除します。何に使うの?