TypeError:+不支持的操作数类型:'NoneType'和'int'

时间:2015-05-20 07:19:12

标签: python python-2.7

我正在尝试计算字符串中每个字符的数字

我的代码在这里:

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'

2 个答案:

答案 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

collections.Counter

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