Python TypeError:序列项0:预期的str实例,找到NoneType

时间:2014-08-09 20:24:23

标签: python map

我从一本书中复制了这段代码:

lyst = {'Hi':'Hello'}
def changeWord(sentence):
    def getWord(word):
        lyst.get(word, word)
    return ''.join(map(getWord, sentence.split()))

我收到此错误:

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    cambiaPronome('ciao')
  File "C:\Python33\2.py", line 6, in cambiaPronome
    return ''.join(map(getWord, list(frase)))
TypeError: sequence item 0: expected str instance, NoneType found

有什么问题?

2 个答案:

答案 0 :(得分:2)

getWord函数没有显式返回任何内容,因此隐式返回None。尝试返回一些东西,例如:

def getWord(word):
    return lyst.get(word, word)

答案 1 :(得分:0)

问题是您是否正在尝试将字符串写入NoneType类型。这是不允许的。

如果您对获取None值感兴趣,那么您可以做的一件事就是将它们转换为字符串。

你可以使用列表理解来完成它,例如:

return ''.join([str(x) for x in map(getWord, sentence.split())])

但是要在这种情况下正确地做到这一点,你必须在内部函数上返回一些东西,否则你有相当于return None