文字列の文字ではなく文字列でカウンターを更新するにはどうすればよいですか?たとえば、このカウンターを2つの文字列で初期化した後:
from collections import Counter
c = Counter(['black','blue'])
「赤」などの別の文字列を「追加」します。 update()メソッドを使用すると、「r」、「e」、「d」の文字が追加されます。
c.update('red')
c
>>Counter({'black': 1, 'blue': 1, 'd': 1, 'e': 1, 'r': 1})
別の文字列を追加することは、カウント+1でキーを更新することと同じであるため、辞書で更新できます。
from collections import Counter
c = Counter(['black','blue'])
c.update({"red": 1})
c
# Counter({'black': 1, 'blue': 1, 'red': 1})
キーが既に存在する場合、カウントは1ずつ増加します。
c.update({"red": 1})
c
# Counter({'black': 1, 'blue': 1, 'red': 2})
c.update(['red'])
>>> c
Counter({'black': 1, 'blue': 1, 'red': 1})
ソースは、イテラブル、ディクショナリ、または別のCounterインスタンスにすることができます。
文字列は反復可能ですが、結果は期待したものとは異なります。まず、リスト、タプルなどに変換します。
以下を使用できます。
c["red"]+=1
# or
c.update({"red": 1})
# or
c.update(["red"])
これらのオプションはすべて、キーの有無に関係なく機能します。そして、存在する場合、それらはカウントを1増やします
これを試して:
c.update({'foo': 1})