collections.Counter(), defaultdict()
collections.Counter()
コンテナ内のデータの個数を計算する場合はcollectionsモジュールのカウンタを使用します.
要素はdickshernerykeyとして格納され、個数はdicksherneryvalueとして格納されます.
これはディック・シャナリー資料型です.
tmp = ['kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']
ex = collections.Counter(tmp)
print(ex)
✔ .keys() & .values()
print(ex.keys())
print(ex.values())
✔ .items()
import collections
tmp = "ABCDEEEEEFFFGG"
ex = collections.Counter(tmp)
for key, value in ex.items():
print(key, '가', value, '개 있음')
✔と交差(&)を計算できます.
import collections
ex1 = collections.Counter('ABCDEFGGGGG')
ex2 = collections.Counter('ABCDEFG')
print(ex1 & ex2)
print(ex1 | ex2)
検索に✔がないキーは0を出力します.
import collections
a = 'aaabcc'
sh = collections.Counter(a)
sh['a'] -= 1
print(sh['a']) # 2 출력
print(sh['x']) # 0 출력
collections.defaultdict()
存在しない鍵をディクシャナで問い合わせるとKeyError異常が発生します.
ただしdefaultdictは、存在しない鍵をクエリーする際にエラーが発生せず、設定されたエラー値に基づいてその鍵にアイテムを追加します.
パラメータをint、list、setなどと指定できます.
これはディック・シャナリー資料型です.
from collections import defaultdict
def default_factory():
return 5
tmp = defaultdict(default_factory)
tmp['아이유'] = 10
tmp['카리나'] = 2
print(tmp)
print(tmp['손예진'])
print(tmp)
✔デフォルト値を0に設定したい場合は、intをdefault factoryに渡すことができます.
from collections import defaultdict
tmp = defaultdict(int)
tmp['명수'] = 10
tmp['재석'] = 2
print(tmp)
print(tmp['호동'])
print(tmp
✔パラメータ値リストの場合
import collections
aaa = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
tmp = collections.defaultdict(list)
for key, value in aaa:
tmp[key].append(value)
print(tmp)
✔文字列数
import collections
aaa = 'aaabbcccccdeee'
sH = collections.defaultdict(int)
for x in aaa:
sH[x] += 1
for kk in sH.keys():
print(kk)
print('---')
for jj in sH.values():
print(jj)
print('---')
for key, value in sH.items():
print(key, '는', value, '개 입니다.')
Reference
この問題について(collections.Counter(), defaultdict()), 我々は、より多くの情報をここで見つけました https://velog.io/@jaeyoung9849/collections.Counter-defaultdictテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol