おぼえがき

過ちては則ち改むるにうんぬんかんぬん

標準ライブラリのimportについて(Python)

f:id:feci:20210726231508j:plain

Python3

 

Python3.8.5での標準ライブラリのimportについて。

a = "ajajijiaaiijajii" #aとjとiが不規則に並んだ文字列
b1 = {}                #①用の空のライブラリー
b2 = {}                #②用の空のライブラリー

#①for文でaを辞書化する
for c in a:            #aを1つずつcに入れる
  if c not in b1:      #もしb1にcという名前のキーがなかったら以下のスクリプトを実行
    b1[c= 0          #b1のcキーに0を代入する
  b1[c+= 1           #b1のcキーの現在のバリューに1をプラスする
print(b1)              #{'a': 5, 'j': 5, 'i': 6}


#②setdefault関数でaを辞書化する
for c in a:
  b2.setdefault(c0#b2にcという名前のキーがなければそのキーのバリューに0を代入する
  b2[c+= 1          #①と同じ処理
print(b2)             #{'a': 5, 'j': 5, 'i': 6}


#③defaultdictをimportしてaを辞書化(?)する
from collections import defaultdict #collectionsモジュールのdefaultdictをimport

b3 = defaultdict(int#原理は不明だが新しいキーのバリューに0が入るらしい

for c in a:
  b3[c+= 1          #①や②と同じ処理
print(b3)             #defaultdict(<class 'int'>, {'a': 5, 'j': 5, 'i': 6})

標準ライブラリとは、Pythonが事前に用意してくれているライブラリのことです。

 

ライブラリは複数のパッケージを集めたものの名称なので、標準ライブラリの中にはモジュールがたくさん入っています。

これらのモジュールを使うには、いちいちそれを当該モジュールにimportしなければいけません。

 

上記の①と②のスクリプトでは、変数aの中にある不規則に並んだaとjとiを、空のディクショナリーにそれぞれキーとバリューという形で整理して代入しようとしています。

これと同じような処理を標準ライブラリからcollectionsモジュールのdefaultdictをimportしておこなったのが③です。

 

標準ライブラリを使うには、このようにしていちいち目的のモジュールだか関数だかを当該のモジュールにimportする必要があります。

 

 

ちなみに②で使っているsetdefault関数は、辞書型の変数に存在しないキーがあった場合に、新しくキーとバリューを登録するための関数です。

 

 

setdefault関数の定形は以下のとおりです。

 

辞書型の変数名.setdefault(キー名, バリュー名)

 

 

②では空の辞書型であるb2に対して b2.setdefault(c, 0) としていますので、現在のb2にcという名前のキーが存在しないときは、そのキーに0というバリューを付けてキーとバリューをb2に追加で登録する、という感じの処理になっています。

 

 

以上です。