исключение python: не подлежащий обработке тип: 'list' - PullRequest
0 голосов
/ 15 февраля 2012
 try:
    return [ True, errors[error], error ] # Error found
 except SoapFault as e: #or this could be Exception as e doesn't matter
    print str(e)

Я получаю

['soapenv', 'Sender', 'invalid request']
unhashable type: 'list'   

что не так с этим непристойным списком, и когда я пытаюсь print e[2], я получаю IndexError: tuple index out of range

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

Вы возвращаете список чему-то, что ожидает тип hashable, например, int, строку или кортеж типа hashable. Это вызывает сообщение о unhashable type: list. Списки не подлежат изменению, потому что они изменчивы; изменение их содержимого приведет к изменению их hashvalue, что недопустимо. Распространенный способ получить эту ошибку - попытаться использовать список как ключ в dict или как элемент в наборе.

Вторая ошибка, около tuple index out of range, означает, что вы пытались проиндексировать кортеж за его концом. Это означает, что вы пытаетесь проиндексировать не этот список ['soapenv', 'Sender', 'invalid request'], а какой-то другой элемент. Это может быть кортеж , содержащий этот список, но, не глядя на этот кортеж, невозможно сказать. Попробуйте напечатать его repr().

1 голос
/ 15 февраля 2012

Во-первых, вы уверены, что ошибка - это число, а не строка, например «1»?Может быть, это проблема.Для второго ответа, e, вероятно, не массив.Как только он преобразуется в строку, он может распечатать содержимое упакованного массива.

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

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