我有3个计数器,不同字符串的字频总数。
Counter({u'childhood': 3, u'waiting': 2}) #counter1
Counter({u'childhood': 5}) #counter2
Counter({u'waiting': 2}) #counter 3
Atm我能够执行计数器添加以获得所有计数器中所有单词的总字数。
Counter({u'childhood': 8, u'waiting': 4})
然而,我需要取每个计数器并将它们插入一个哈希表,其中单词为key,链接列表为值,其中每个链接的条目具有每个计数器的每个字符串的计数。
实施例
[childhood] : [1,3] -> [2,5] #counter 1 - 3 times | counter 2 - 5 times
[waiting] : [1,3] -> [3,2]
如何在Python中实现这一目标?我在考虑里面有一个deque的字典?或者扩展计数器添加功能?
我试图使用现有的python数据结构而不扩展或创建自定义数据结构实现。
答案 0 :(得分:1)
假设你有一些序列counters
total = sum(counters, Counter())
table = {word: [counter[word] for counter in counters] for word in total}
会给你一个像
这样的词典{
'childhood': [3, 5, 0],
'waiting': [2, 0, 2]
}
答案 1 :(得分:1)
您可以使用defaultdict(list)
将每个条目存储为元组:
from collections import Counter, defaultdict
counters = [
Counter({u'childhood': 3, u'waiting': 2}), #counter1
Counter({u'childhood': 5}), #counter2
Counter({u'waiting': 2})] #counter3
combined = defaultdict(list)
for number, counter in enumerate(counters, start=1):
for word, count in counter.items():
combined[word].append((number, count))
print(combined['childhood'])
print(combined['waiting'])
哪会给你:
[(1, 3), (2, 5)]
[(1, 2), (3, 2)]