Python学習【365日チャレンジ!】281日目のマスターU(@Udemy11)です。
Youtubeの動画を見ていると、次から次へとおすすめの動画が再生されるので、ついつい時間を忘れて見入ってしまいます。
そんなYoutubeですが、私が見るのはほとんど釣り動画で、挑戦しようと思っているのが「アジの泳がせ釣り」。
ルアーと違って、日中でも投げてほっとくだけで青物が釣れるという超魅力的な釣り方です。
ただ、餌のアジを生かしておく活かしバッカンがいるし、アジをつかんで針をつけないといけないので、あまり乗り気じゃなかったのですが、動画で結構簡単に釣れているのを見て、かなり誘惑されています。
アジングである程度の数のアジを確保出来たら実践したいと思います。
それでは今日も、Python学習を始めましょう。
昨日の復習
昨日は、namedtuple
を使ってCSVファイルを活用する方法を学習しました。
CSVファイルの扱い方を復習して、namedtuple
を使って、CSVファイルから値を取り込んで、取り込んだデータを活用することができました。
くわしくは昨日の記事をごらんください。
今日は、辞書型データの保有順を記憶するOrdredDict
を学習します。
dict
辞書型データを扱う場合は、bracesの波括弧を使ってkey
とvalue
の値を入れましたが、Python2.7までは、dict
型は順番を保持していませんでした。
なので、次のようなコードで、変数d
に値を入れてprint
出力すると、順番が入れ替わったりすることがあり、順番の判断をすることができませんでした。
d = {'apple': 2, 'banana': 1, 'orange': 4}
print(d)
出力結果
{'orange': 4, 'banana': 1, 'apple': 2}
現在Pythonの最新バージョンは3.9ですが、Python3.6から、動作の保証はないものの、値の順序を保持するようになり、Python3.7から正式にdict
型のデータで、データの順序が保持できるようになりました。
OrderedDict
辞書型データで順序が保持できるようになったので、OrderedDict
が不要かというとそうでもなく、辞書型データどうしの順序を含めた比較では、OrderedDict
を使う必要があります。
import collections
d1 = {'apple': 2, 'banana': 1, 'orange': 4}
d2 = {'apple': 2, 'orange': 4, 'banana': 1}
od1 = collections.OrderedDict(
{'apple': 2, 'banana': 1, 'orange': 4})
od2 = collections.OrderedDict(
{'orange': 4, 'apple': 2, 'banana': 1})
print(d1 == d2)
print(d1 == od2)
print(od1 == od2)
出力結果
True
True
False
上記のコードは、中に入れるkey-value
が同じで順序が違うdict
とOrderedDict
を作って、その比較をしているコードになります。
dict
のd1
とd2
は、中にはいっているkey
とvalue
は同じなので、12行目はTure
が返されています。
13行目は、d1
とOrderedDict
を比較していますが、順序が入れ替わっていても入っている値が同じであるため、Ture
を返しています。
14行目はOrderedDict
であるod1
とod2
比較していますが、値は同じでも、順番が違うので、false
と表示されているのがわかります。
まとめ
Pythonはどんどん進化して、アップデートが繰り返されているので、酒井さんの講座では、3.6までの対応でしたが、現時点ですでにPython3.9までアップデートされています。
情報はどんどん古くなってしまうので、講座の内容にとらわれることなく、「おかしいな」と感じたら、すぐにネットで調べる癖をつけたほうがいいでしょう。
それでは、明日もGood Python!