Ошибка при выполнении проблемы кода-словаря Python - PullRequest
2 голосов
/ 18 июля 2010
while stack.isEmpty() != 1:
             fin = stack.pop()
         print fin            - output is (1,1)
         k = final.get(fin)
         return k

def directionToVector(direction, speed = 1.0):
    dx, dy =  Actions._directions[direction]
    return (dx * speed, dy * speed)
  directionToVector = staticmethod(directionToVector)

но когда я делаю это возвращение, оно выдает мне ошибку, а final - это каталог, который я создал со списками ключей и значений

Ошибка:

File "line 212, in directionToVector
    dx, dy =  Actions._directions[direction]
KeyError: 'W'

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Actions._directions предположительно словарь, поэтому строка:

dx, dy =  Actions._directions[direction]

во время выполнения (на основании сообщения об ошибке):

dx, dy =  Actions._directions["W"]

и жалуется, что в этом словаре нет ключа "W". Поэтому вы должны проверить, что вы действительно добавили этот ключ с некоторым значением. Кроме того, вы можете сделать что-то вроде:

dx, dy =  Actions._directions.get(direction, (0, 0))

где (0, 0) может быть любым значением по умолчанию, которое вы выбираете, когда такой клавиши нет. Другая возможность - обработать ошибку явно:

try:
    dx, dy =  Actions._directions[direction]
except KeyError:
    # handle the error for missing key
0 голосов
/ 18 июля 2010

эта ошибка

KeyError: 'W'

означает, что запрошенный вами ключ ('W') не является одним из ключей, которые хранятся в словаре. Это потому, что ваш словарь имеет ключ 'запад', а не 'W' (см. Ваш предыдущий вопрос ). Попробуйте вместо этого:

key = { 'N' : 'north', 'S' : 'south', 'E' : 'east', 'W' : 'west' }[direction]
dx, dy =  Actions._directions[key]

В качестве альтернативы, убедитесь, что вы передаете строку 'west' в directionToVector, а не строку 'W'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...