«ошибка ключа» при использовании enum в качестве ключа словаря в Python3 - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу использовать enum в качестве ключа для словаря, но получаю 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'>

В документации по словарям говорится, что я могу использовать любое неизменяемое значение в качестве ключа, и я предполагаю, что значение перечисления является неизменным.

Как использовать перечисление в качестве ключа в словаре?

1 Ответ

0 голосов
/ 23 сентября 2019

Может быть, вы установили 3 цвета, но в строке 18 у вас есть 4

countColors([Color.RED, Color.RED, Color.BLUE, Color.GREEN])

try

countColors ([Color.RED, Color.Blue, Color.Green])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...