【问题标题】:adding an int to int in a list comprehension fails在列表推导中将 int 添加到 int 失败
【发布时间】: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),以防getw中没有找到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

标签: python nonetype operand


【解决方案1】:

如果在字典word_index 中找不到w,则word_index.get(w)None

如果在找不到w 时希望此值为0,则应执行word_index.get(w, 0)

[word_index.get(w) + 3 for w in stop_words if w in word_index],如果您想跳过未找到的单词。

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多