【问题标题】:KeyError when key is in dictionary键在字典中时出现 KeyError
【发布时间】:2017-10-06 06:22:28
【问题描述】:

所以我偶然发现了这个奇怪的错误。我制作了一个包含这些键的字典:

database_5x5 = {'(1, 0, 0, 0, 1)': [(0, 0), (0, 1)],
                '(0, 1, 0, 1, 0)': [(0, 0), (0, 3)],
                '(1, 1, 1, 0, 0)': [(0, 1)],
                '(0, 0, 1, 1, 1)': [(0, 3)],
                '(1, 0, 1, 1, 0)': [(0, 4)],
                '(0, 1, 1, 0, 1)': [(0, 0)],
                '(1, 1, 0, 1, 1)': [(0, 2)]
                }

这是访问字典的代码:

 bottom = tuple(puzzle[len(puzzle)-1])
    next_moves = database_5x5[bottom]

我的代码运行并给了我这个错误:

KeyError: (0, 1, 1, 0, 1)

我不确定这里有什么问题... 感谢您的帮助!

【问题讨论】:

  • 键是字符串,但看起来您正在尝试使用元组。
  • 试试database_5x5[str(bottom)]
  • 要么更改字典以将元组作为键,要么在查找​​时将元组转换为字符串(例如database_5x5[str(bottom)])。

标签: python dictionary keyerror


【解决方案1】:

字典中的键是string 类型。你应该投bottom:

next_moves = database_5x5[str(bottom)]

【讨论】:

  • 啊,这就是我睡眠不足时会发生的事情...我想念这些基本的东西...谢谢!
【解决方案2】:

您的字典中的每个键 database_5x5 都是一个字符串,但您请求一个带有 元组bottom 的元素。尝试转换一个键类型,例如这样:

next_moves = database_5x5[str(bottom)]

【讨论】:

    【解决方案3】:

    您的 dict 的键是字符串类型。所以你需要确保两件事。

    1) 此段tuple(puzzle[len(puzzle)-1]) 产生一个字符串。
    2)(傻一)空格和逗号完全匹配。

    修复:
    1) 将您的键更改为不是字符串。
    2) 将bottom 转换为字符串 - database_5x5[str(bottom)]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多