【发布时间】:2018-12-26 20:01:50
【问题描述】:
在此声明中
stop_words_index = [word_index.get(w) + 3 for w in stop_words]
word_index.get(w) 是一个 int,但是这个语句生成
TypeError:+ 不支持的操作数类型:“NoneType”和“int”
如何解决这个问题?
【问题讨论】:
-
你应该做
get(w, 0),以防get在w中没有找到word_index时返回None -
word_index.get(w)显然不是 int -
是的,听起来您正在尝试访问一个不存在的哈希,因此是 nonetype
-
看看
[w for w in stop_words if w not in word_index] -
当你使用
get而不使用第二个参数时,你应该始终保持警惕,尤其是嵌入到更大的表达式中。如果w一直存在,您应该使用[w]而不是.get(w)。如果它不总是存在,你需要考虑当它不存在时你想要什么值,因为通常 - 就像这里 - 它会是 0 或 1 或空字符串或其他东西,而不是None。