python - 在 Python3 中使用枚举作为字典键时出现“键错误”
问题描述
我想使用枚举作为字典的键,但得到一个 KeyError。
#!/usr/bin/python3
from enum import Enum, unique
from typing import List
@unique
class Color(Enum):
RED = "cherry"
GREEN = "cucumber"
BLUE = "blueberry"
allColors = {}
def countColors(colors: List[Color]):
for c in colors:
allColors[c] += 1
countColors([Color.RED, Color.RED, Color.BLUE, Color.GREEN])
for c in allColors:
print(f"""{allColors[c]} {c.value} {c.name} pipes""")
当我运行这个时,我得到
Traceback (most recent call last):
File "mvce.py", line 18, in <module>
countColors([Color.RED, Color.RED, Color.BLUE, Color.GREEN])
File "mvce.py", line 16, in countColors
allColors[c] += 1
KeyError: <Color.RED: 'cherry'>
字典上的文档说我可以使用任何不可变值作为键,并且我假设枚举值是不可变的。
如何使用枚举作为字典中的键?
解决方案
会不会是你设置了 3 种颜色,但在第 18 行你有 4
countColors([Color.RED, Color.RED, Color.BLUE, Color.GREEN])
尝试
countColors ([Color.RED, Color.Blue, Color.Green])
推荐阅读
- css - 如何在内容后面显示背景图像?
- azure - Azure kubernetes - 它可以跨多个区域分布吗?
- html - HTML 缓存字体文件
- swift - 使用 struct 显示图像一段时间
- c - 当通过双重引用传递给集合函数时,如何访问 C 中不透明数据结构的成员?
- python - IndentationError:意外缩进 Python 3 错误
- python - 我已经为数字的 collatz 模式编写了一个 python 代码,我想计算达到 1 所需的步数。我该怎么做?
- php - 使用 Laravel 存储从 FTP 下载大型 zip 文件失败
- sql - SQL----- 尝试将查询结果导出为 CSV 时出错
- python - 尝试使用 Python 将标签添加到 CSV 中的日期时间间隔分组时遇到问题