Python学習【365日チャレンジ!】276日目のマスターU(@Udemy11)です。
ここのところ、若干睡眠不足で昼間に眠気が襲ってくるので、早く寝ないととおもいつつ、ついつい夜ふかしをしてしまいます。
原因は、メルカリやPayPayフリマ、ラクマなどで、魅力的な商品を見つけては、どうしようかな〜と悩んだり、値段交渉したりしているせいなんです。
とりあえず、エギングに必要な餌木猿スーパーシャローの3.5号は色も結構揃って物欲も一段落したので、少しは睡眠不足が解消するかと思いますが、また別の物欲が湧いてくるんですよね。
ということで、寝不足と戦いながらも、今日も、Python学習を始めましょう。
昨日の復習
昨日は、文字をカウントして辞書型データにまとめることができるdefaultdict
を学習しました。
defaultdict
を使わなくても、for
ループを使って文字のカウントをすることはできましたが、cを使えば、よりシンプルなコードにすることができました。
以前学習した復習も兼ねた昨日の記事は、こちらからごらんください。
今日は、int
だけでなくset
でも使えるdefaultdict
を学習します。
set
set
は集合ですが、集合を覚えていますか?
集合は、リストやディクショナリで重複した値を一つにまとめて、どの種類があるかを知ることができるものです。
例えば、次コードのように、リストを集合にして出力する場合を考えてみましょう。
l = [1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5]
s = set(l)
print(s)
出力結果
{1, 2, 3, 4, 5}
リストが種類別にまとめて表示されますよね。
複数ある値は一つにまとめられて表示されることを思い出しましたか?
一方で、defaultdict
は、int
だけでなくset(集合)
でも使うことができるので、例を示してみたいと思います。
defaultdict(set)
辞書型で重複するkey
をvalue
だけ分けて辞書に入れたり、重複するkey-value
は一つにしたりすることができます。
一例のコードを書いてみます。
import collections
d = collections.defaultdict(set)
s = [('red', 1), ('blue', 3), ('red', 2), ('blue', 3), ('blue', 4)]
for k, v in s:
d[k].add(v)
print(d)
出力結果
defaultdict(, {'red': {1, 2}, 'blue': {3, 4}})
昨日collections.defaultdict(int)
としたところをcollections.defaultdict(set)
に変更して、辞書型リストs
を定義しています。
辞書型のリストs
には、同じkey
やvalue
が入っているので、5行目と6行目でfor
ループとadd
メソッドを使ってkey-value
にまとめたset
データに保存し、7行目でd
を出力しています。
まとめ
個人的に、集合型データの取り扱いは、重複するデータを一つにまとめるなど、少しややこしかったので、きちんと理解せずに使っていたのですが、今日の学習で、きちんと理解することができました。
重複したデータをひとまとめにしてくれる集合は、非常に便利ですし、実践になれば結構使いそうな感じですので、しっかりと覚えておいたほうがいいでしょう。
覚えてなくても実際に使う場面が増えてくると嫌でも憶えられそうな気もしますが。。。
それでは、明日もGood Python!