2017-07-27 3 views
0

Wie Aktualisieren eines Counters mit einer Zeichenfolge, nicht die Buchstaben der Zeichenfolge? Zum Beispiel, nach diesen Zähler mit zwei Strings initialisiert:Aktualisieren Counter-Auflistung in Python mit Zeichenfolge, nicht Buchstabe

from collections import Counter 
c = Counter(['black','blue']) 

„hinzufügen“, um es eine andere Zeichenfolge wie ‚rot‘. Wenn ich das Update() -Methode verwenden, fügt es die ‚r‘ Buchstaben ‚e‘, ‚d‘:

c.update('red') 
c 
>>Counter({'black': 1, 'blue': 1, 'd': 1, 'e': 1, 'r': 1}) 

Antwort

1

Sie es mit einem Wörterbuch aktualisieren, hinzuzufügen, da eine andere Zeichenfolge gleiche ist wie der Schlüssel aktualisieren mit zählen +1:

from collections import Counter 
c = Counter(['black','blue']) 

c.update({"red": 1}) 

c 
# Counter({'black': 1, 'blue': 1, 'red': 1}) 

Wenn bereits der Schlüssel vorhanden ist, wird der Zählwert um eins erhöht:

c.update({"red": 1}) 

c 
# Counter({'black': 1, 'blue': 1, 'red': 2}) 
+1

yep, ich wusste, dass ich etwas einfach fehlte. Danke! – aless80

3
c.update(['red']) 
>>> c 
Counter({'black': 1, 'blue': 1, 'red': 1}) 

Quelle kann ein iterables, ein Wörterbuch oder eine andere Counter-Instanz sein.

Obwohl eine Zeichenfolge iterierbar ist, ist das Ergebnis nicht das, was Sie erwartet haben. Zuerst wandelt es in eine Liste, Tupel usw.

2

Sie verwenden können:

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

Alle diese Optionen funktionieren unabhängig von der Schlüssel vorhanden ist oder nicht. Und falls vorhanden, werden sie die Zählung um 1

0

erhöhen Try this:

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

Ist das nicht die Antwort von @Psidom? – Alexander

+0

Ich habe es nicht gesehen, als ich geantwortet habe. –

+1

Nachdem Sie nun gesehen haben, dass Ihre Antwort praktisch eine exakte Kopie einer zuvor bereitgestellten Antwort ist und keinen neuen Inhalt enthält, was sollten Sie Ihrer Meinung nach tun? – Alexander

Verwandte Themen