【发布时间】:2013-09-24 14:28:38
【问题描述】:
我正在逐行浏览一个大型 CSV 文件。我想要做的是计算某个列中字符串的出现次数。我遇到麻烦的地方是我希望将计数器嵌套在字典中,其中外部字典的键是另一列的值。我需要这样做,否则数据将被错误地处理,因为有重复。
想象一下我的 CSV:
outerDictKey CounterKey
apple purple
apple blue
pear purple
所以基本上我想要:
dictionary = { apple:
counter({blue: 1
purple: 1})
pear:
counter({purple: 1})
}
我不知道该怎么做。
myCounter = Counter()
myKey = 'barbara'
counterKey = 'streisand'
largeDict = defaultdict(dict)
largeDict[myKey] = {myCounter[counterKey] += 1}
直观地说,这似乎不起作用,当然它会给出语法错误。
我也试过
largeDict[myKey][myCounter][counterKey]+=1
这会引发“TypeError: unhashable type: 'Counter'”错误。
终于
>>> largeDict[myKey]=Counter()
>>> largeDict[myKey][myCounter][counterKey]+=1
仍然会出现类型错误。那么如何增加嵌套在字典中的 Counter 呢?
【问题讨论】:
-
所以外层字典直接包含计数器?
-
当您使用外部字典的键时,我希望它给您一个计数器。增量是指“在计数器中查找字符串并加 1”。所以每次找到“apple”这个词时,它都会在计数器中查找“apple”并添加一个
-
那为什么不直接使用
defaultdict(Counter)呢?你把事情复杂化了。然后你就做largeDict['columnkey']['thing-you-want-count'] += 1
标签: python dictionary counter