2016-05-20 7 views
2

Ich habe eine Zeit lang dieses Problem untersucht, zur Lösung ‚Kombination‘mehrere Zähler() Objekt oder dicts. Aber es kann immer noch nicht funktionieren. Und ich fand zwei Referenz unten:
Wie summiere() den Inhalt mehrerer Sammlungen. Counter() Objekte mit Schleife?

Zum Beispiel habe ich viele 'Typ Zähler' Variablennamen, um [1 to 100]:

Name:counter_1 Value:Counter({'a':1, 'b':2, 'c':3}) 
Name:counter_2 Value:Counter({'b':5, 'c':19, f:17}) 
Name:counter_3 Value:Counter({'a':11, 'b':22, 'c':33, 'd':97}) 
... 
Name:counter_100 Value:Counter({'c':55, 'd':22, 'e':63, 'f':21}) 

Wenn ich jedes von einem manuellhinzufüge, es wird mich wahnsinnig machen.

Gibt es eleganter oder einfacher Weg zu sum() alles?

Tausend Dank!

Antwort

3

Verwenden Sie einfach die integrierte Funktion sum(), und geben Sie einen entsprechenden Anfangswert eines leeren Counter.

>>> import collections 
>>> c1 = collections.Counter({'a':1, 'b':2, 'c':3}) 
>>> c2 = collections.Counter({'b':5, 'c':19, 'f':17}) 
>>> sum((c1, c2), collections.Counter()) 
Counter({'c': 22, 'f': 17, 'b': 7, 'a': 1}) 
+0

was ist, wenn ich von c1 bis c100 summieren muss? tks – Kudos

+0

Sie legen sie alle in eine "Liste". Du solltest das schon tun. Haben Sie wirklich separate Variablen 'counter_1' bis' counter_100'? – TigerhawkT3

+0

Ja. Ich habe versucht, etwas wie (aber Type Error) 'sum (local() ['counter _' + str (i) für i in (1.100)], Counter())'. und ich bin auch neu in python. – Kudos