我正在尝试计算字符串中每个字符的数字
我的代码在这里:
def CharCount(string):
mydict = {}
for char in string:
mydict[char] = mydict.get(char) + 1
return '\n'.join(['%s,%s' % (c, n) for c, n in mydict.items()])
if __name__ == '__main__':
print CharCount("abcda")
在运行上面的代码时,我收到以下错误:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
答案 0 :(得分:5)
dict.get(key)
不在字典中,则 None
默认返回key
。改为提供有用的默认值:
for char in string:
mydict[char] = mydict.get(char, 0) + 1
但是,有一种更好的方法:collections.defaultdict
:
from collections import defaultdict
mydict = defaultdict(int)
for char in string:
mydict[char] += 1
from collections import Counter
mydict = Counter(string)
答案 1 :(得分:1)
首次执行ace char
时,dict.get(char)
会返回None
,而不是0
。这应该解决:
mydict[char] = (mydict.get(char) if char in mydict else 0) + 1