Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのカウンター?


カウンターは、同等の値が追加された回数を追跡するコンテナーです。 Pythonカウンタークラスはコレクションモジュールの一部であり、辞書のサブクラスです。

Pythonカウンター

カウンターは、アイテムがディクショナリキーとして格納され、ディクショナリ値としてカウントされる、順序付けられていないアイテムのコレクションと考えることができます。

カウンターアイテムの数は、正、ゼロ、または負の整数にすることができます。キーと値に制限はありませんが、通常、値は数値を目的としていますが、他のオブジェクトタイプも格納できます。

初期化

Counterは、3つの形式の初期化をサポートしています。そのコンストラクターは、アイテムのシーケンス、キーとカウントを含む辞書、または文字列名をカウントにマッピングするキーワード引数を使用して呼び出すことができます。

import collections
print (collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
print (collections.Counter({'a': 2, 'b': 3, 'c':1}))
print(collections.Counter(a=2, b=3, c=1))

3つの初期化形式すべてからの出力は同じです-

Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})

空のカウンターを作成するには、引数なしでカウンターを渡し、updateメソッドを介してカウンターにデータを入力します。

import collections
c = collections.Counter()
print('Initial: ', c)
c.update('abcddcba')
print('Sequence: ', c)
c.update({'a': 1, 'd':5})
print('Dict: ', c)

出力

Initial: Counter()
Sequence: Counter({'a': 2, 'b': 2, 'c': 2, 'd': 2})
Dict: Counter({'d': 7, 'a': 3, 'b': 2, 'c': 2})

カウントへのアクセス

カウンターにデータが入力されると、その値はディクショナリAPIを介してフェッチできます。

import collections
c = collections.Counter('abcddcba')
for letter in 'abcdef':
   print('%s : %d' %(letter, c[letter]))

出力

a : 2
b : 2
c : 2
d : 2
e : 0
f : 0

Counterは、不明なアイテム(上記のプログラムで説明したアイテムeおよびfなど)に対してKeyErrorを発生させません。入力に値が表示されていない場合、そのカウントは0です(上記の出力の不明な項目eおよびfの場合と同様)。

elements()メソッドは、カウンターに認識されているすべてのアイテムを生成するイテレーターを返します。

import collections
c = collections.Counter('Python Counters')
c['z'] = 0
print(c)
print(list(c.elements()))

出力

Counter({'t': 2, 'o': 2, 'n': 2, 'P': 1, 'y': 1, 'h': 1, ' ': 1, 'C': 1, 'u': 1, 'e': 1, 'r': 1, 's': 1, 'z': 0})
['P', 'y', 't', 't', 'h', 'o', 'o', 'n', 'n', ' ', 'C', 'u', 'e', 'r', 's']

要素の順序は固定されておらず、カウントがゼロ未満のアイテムは含まれていません。

n個の入力とそれぞれのカウントから共通の入力を生成するには、most_common()関数を使用します。

import collections
c = collections.Counter()
texts = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.'''
for word in texts:
c.update(word.rstrip().lower())
print("Five most common letters in the texts: ")
for letter, count in c.most_common(5):
print("%s: %7d" %(letter, count))

出力

Five most common letters in the texts:
i: 42
e: 38
t: 32
o: 29
u: 29

上記の例では、テキストに表示される文字(またはファイルと見なすことができます)を数えて度数分布を生成し、最も一般的な5つを印刷します。 most_common()の引数を省略すると、頻度順にすべてのアイテムのリストが生成されます。

算術

カウンターインスタンスは、結果を集計するための算術演算と集合演算をサポートしています。

import collections
c1 = collections.Counter(['a', 'b', 'c', 'a' ,'b', 'b'])
c2 = collections.Counter('alphabet')
print('C1: ', c1)
print('C2: ', c2)
print ('\nCombined counts: ')
print(c1 + c2)
print('\nSubtraction: ')
print(c1 - c2)
print('\nIntersection (taking positive minimums): ')
print(c1 & c2)
print('\nUnion (taking maximums): ')
print(c1 | c2)

出力

C1: Counter({'b': 3, 'a': 2, 'c': 1})
C2: Counter({'a': 2, 'l': 1, 'p': 1, 'h': 1, 'b': 1, 'e': 1, 't': 1})
Combined counts:
Counter({'a': 4, 'b': 4, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
Subtraction:
Counter({'b': 2, 'c': 1})
Intersection (taking positive minimums):
Counter({'a': 2, 'b': 1})
Union (taking maximums):
Counter({'b': 3, 'a': 2, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})

操作によって新しいカウンターが生成されるたびに、カウントがゼロまたは負のアイテムはすべて破棄されます。


  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. Pythonオブジェクトを正しくクリーンアップするにはどうすればよいですか?

    グローバルを[なし]に設定すると、グローバルがクリーンアップされます。地元の人々は、セッションの終わりに自己破壊します。 Pythonによって呼び出される関数__del__は、グローバルをNoneに設定します。 指定されたクラスのすべてのオブジェクトがクリーンアップされる次のコードを検討してください- 例 class Counter:     Count = 0   # This is the count of objects of this class     def __init__(self, name):     &