2013-10-14 4 views
22

Ich arbeite mit collections.Counter() Zähler. Ich möchte zwei von ihnen sinnvoll kombinieren.Summieren der Inhalte von zwei Sammlungen. Counter() Objekte

Angenommen, ich habe 2 Zähler, sagen wir,

Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5}) 

und

Counter({'menu': 1, 'good': 1, 'bar': 3}) 

Ich versuche, mit am Ende:

Counter({'menu': 21, 'good': 16, 'happy': 10,'bar': 8}) 

Wie kann ich das tun?

+0

Alles, was Sie tun müssen, ist sie summieren. –

+0

Genauer gesagt, 'sum (counters, Counter())', um sicherzustellen, dass der Summenalgorithmus mit einer Counter-Basis anstelle einer einfachen numerischen Basis beginnt. – KobeJohn

Antwort

35

Alles, was Sie tun müssen, ist sie hinzufügen:

>>> from collections import Counter 
>>> a = Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5}) 
>>> b = Counter({'menu': 1, 'good': 1, 'bar': 3}) 
>>> a + b 
Counter({'menu': 21, 'good': 16, 'happy': 10, 'bar': 8}) 

Von den docs:

Mehrere mathematische Operationen zur Verfügung gestellt werden für die Kombination von Zählerobjekten Multimengen (Zähler zu erzeugen, die Zählungen größer als Null haben). Addition und Subtraktion kombinieren Zähler durch Addieren oder Subtrahieren der Zählerstände der entsprechenden Elemente.