Python collections.counter

22199 ワード

collections


このモジュールは特殊なコンテナデータ型を実現し、Pythonの汎用内部コンテナdict、list、set、tupleに代替案を提供する.

各種カウンタの入力値

  • リスト
    -lst=[aa]、[cc]、[dd]、[aa]、[bb]、[ee]の要素数を収集します.取得にはCounter()を使用します.出力結果はDictionary形式を返します.
  • import collections
    lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee']
    print(collections.Counter(lst))
    
    > Counter({'aa': 2, 'cc': 1, 'dd': 1, 'bb': 1, 'ee': 1})
    
    
  • ディック社Dictionary
    - collections.次の例に示すように、Counter()は要素数の多いものから出力される.
    入力値がDictionaryで表示されている場合、結果値もDictionaryです.
  • 
    import collections
    print(collections.Counter({'가': 3, '나': 2, '다': 4}))
    
    > Counter({'다': 4, '가': 3, '나': 2})
    
  • 値=個数形式
    - collections.counter()の値=個数.
    collections.偶数(a=2、b=3、c=2)は、["a"、"a"、"b"、"b"、"c"、"c]]に等しい.
  • 
    import collections
    c = collections.Counter(a=2, b=3, c=2)
    print(collections.Counter(c))
    print(sorted(c.elements()))
    
    
    > Counter({'b': 3, 'c': 2, 'a': 2})
    > ['a', 'a', 'b', 'b', 'b', 'c', 'c']
    
  • 文字列String
    *文字列を入力すると、{문자 : 개수}のバイナリ形式が返されます.
  • import  collections
    
    container = collections.Counter()
    container.update("aabcdeffgg")
    print(container)
    
    > Counter({'f': 2, 'g': 2, 'a': 2, 'e': 1, 'b': 1, 'c': 1, 'd': 1})
    
    
    
    for  k,v  in  container.items():
    	print(k,':',v)
    
    > f : 2
    > e : 1
    > b : 1
    > g : 2
    > c : 1
    > a : 2
    > d : 1

    Counterでの方法

  • elements()
    *繰り返しカウントされた要素のイテレーションを返します.要素は最初に発見された順序で返されます.要素数が1未満の場合、elements()は無視されます.
  • c = Counter(a=4, b=2, c=0, d=-2)
    print(sorted(c.elements()))
    
    > ['a', 'a', 'a', 'a', 'b', 'b']
  • most_common([n])
    *は、n個の最も一般的な要素とその数が最も一般的から最も少ないリストを返します.nまたはNoneを省略すると、most common()はカウンタ内のすべての要素を返します.同じ数の要素は、最初に発見された順序を維持します.
  • c = Counter('abracadabra').most_common(3)
    print(c)
    
    > [('a', 5), ('b', 2), ('r', 2)]
  • subtract([iterable-or-mapping])
    *反復可能または他のマッピング(またはカウンタ)から要素を抽出します.dict.update()と似ていますが、置換された個数を減算します.入力と出力はいずれも0または負の値です.従来のディックシャーメソッドはカウンタオブジェクトで使用できますが、カウンタでの役割は異なります.
  • c = Counter(a=4, b=2, c=0, d=-2)
    d = Counter(a=1, b=2, c=3, d=4)
    c.subtract(d)
    
    print(c)
    > Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
  • fromkeys(iterable)
    *この方法はCounterオブジェクトでは実施されていません.
  • update([iterable-or-mapping])
    *要素は、イテレーションでカウントするか、他のマッピング(またはカウンタ)で追加できます.dict.update()と似ていますが、置換することが多いです.また、このかわいい子は、(キー、値)ペアのシーケンスではなく、要素のシーケンスであることも望んでいます.
  • Counterオブジェクトの典型的なモードを使用します.
    sum(c.values())                 # 모든 개수의 합
    c.clear()                       # 모든 개수를 재설정합니다
    list(c)                         # 고유한 요소들의 리스트
    set(c)                          # 집합으로 변환합니다
    dict(c)                         # 일반 딕셔너리로 변환합니다
    c.items()                       # (elem, cnt) 쌍의 목록으로 변환합니다
    Counter(dict(list_of_pairs))    # (elem, cnt) 쌍의 리스트를 변환합니다
    c.most_common()[:-n-1:-1]       # 가장 드문 n 개의 요소
    +c                              # 0과 음의 개수를 제거합니다
  • カウンタオブジェクトと組み合わせて、複数のセット(0より大きいカウンタ)を生成する複数の数学演算があります.プラス記号とマイナス記号は、追加またはマイナス記号でカウンタをマージします.交差(交差)と並列セット(union)は、その数の最大値と最小値を返します.各演算では、入力として記号付きの個数を受け入れることができますが、個数が0未満の場合、出力は結果から除外されます.
  • c = Counter(a=3, b=1)
    d = Counter(a=1, b=2)
    c + d                       # 두 계수기 합:  c[x] + d[x]
    Counter({'a': 4, 'b': 3})
    c - d                       
    Counter({'a': 2})
    c & d                       # 교집합:  min(c[x], d[x]) 
    Counter({'a': 1, 'b': 1})
    c | d                       # 합집합:  max(c[x], d[x])
    Counter({'a': 3, 'b': 2})
    
    c = Counter(a=2, b=-4)
    +c
    Counter({'a': 2})
    -c
    Counter({'b': 4})