web-dev-qa-db-ja.com

pythonのカウンターコレクションを文字ではなく文字列で更新します

文字列の文字ではなく文字列でカウンターを更新するにはどうすればよいですか?たとえば、このカウンターを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})
7
aless80

別の文字列を追加することは、カウント+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})
10
Psidom
c.update(['red'])
>>> c
Counter({'black': 1, 'blue': 1, 'red': 1})

ソースは、イテラブル、ディクショナリ、または別のCounterインスタンスにすることができます。

文字列は反復可能ですが、結果は期待したものとは異なります。まず、リスト、タプルなどに変換します。

12
Alexander

以下を使用できます。

c["red"]+=1
# or
c.update({"red": 1})
# or 
c.update(["red"])

これらのオプションはすべて、キーの有無に関係なく機能します。そして、存在する場合、それらはカウントを1増やします

7
anon

これを試して:

c.update({'foo': 1})
0
Jatin Bisht