【问题标题】:Python raises a KeyError (for an out of dictionary key) even though the key IS in the dictionary即使键在字典中,Python 也会引发 KeyError(对于字典外键)
【发布时间】:2011-02-13 23:09:51
【问题描述】:

我得到一个字典外键的 KeyError,即使我知道该键实际上在字典中。关于可能导致这种情况的任何想法?

print G.keys()

返回以下内容:

['24', '25', '20', '21', '22', '23', '1', '3', '2', '5', '4', '7', '6', '9', '8', '11', '10', '13', '12', '15', '14', '17', '16', '19', '18']

但是当我尝试在下一行代码中访问字典中的值时...

for w in G[v]:    #note that in this example, v = 17

我收到以下错误消息:

KeyError: 17

感谢任何帮助、提示或建议。谢谢。

【问题讨论】:

  • 还有一点值得注意,我尝试访问不同的键值(1、2、3 等),仍然得到相同的结果。

标签: python exception dictionary key


【解决方案1】:

很简单,17 != '17'

【讨论】:

  • 哇,我觉得自己像个白痴。我正在从文件中读取这些值,但出于某种原因,我没有想到 - 谢谢!
  • 对我来说闻起来像是设计缺陷。
  • @tchrist 没有将整数隐式转换为字符串作为语言中的设计缺陷?
【解决方案2】:

键是字符串,您正试图以整数形式访问它们。

【讨论】:

  • 所以?愚蠢的那应该很重要。这不是 Java,你知道的!
  • @tchrist:错了。 Python 是强类型的……它应该是。这不是 PHP,你知道的! (糟糕。)
【解决方案3】:

尝试使用 v = '17'。您必须将 int 转换为字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 2018-12-07
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多