Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2013 16:54:07

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

Пытааюсь убрать одинаковые элементы при помощи

robots=list(set(robots)
где robots это
for i in range(nr):
    s=raw_input().split()
    robots.append({'city':s[0], 'v':s[1], 'color':i})

Выдается ошибка
Traceback (most recent call last):
File "C:\scripts\graph2\task.py", line 19, in <module>
robots=list(set(robots))
TypeError: unhashable type: 'dict'

Верно ли я понимаю, что она означает, что множества не могут содержать словари?
Как исправить эту ошибку?



моя подпись

Офлайн

#2 Окт. 29, 2013 17:23:38

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

на stackowerflow есть ответ

TL;DR
тебе надо сделать свой FrozenDict отнаследовавшись от dict

Офлайн

#3 Окт. 29, 2013 18:43:46

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

nokados
Как исправить эту ошибку?
result = []
lst = [{1: 1, 2: 0, 3: 3}, {1: 0, 2: 2, 3: 3}, {1: 1, 2: -2, 3: 0}, {1: 1, 2: 2, 3: 3},{1: 1, 7: 0, 3: 3}, {1: 1, 2: 2, 3: 3},{1: 1, 2: 0, 3: 3}, {1: 1, 2: 2, 3: 3},]
for elem in lst:
    if not filter(lambda x: elem == x, result):
        result.append(elem)

print(result)
[{1: 1, 2: 0, 3: 3}, {1: 0, 2: 2, 3: 3}, {1: 1, 2: -2, 3: 0}, {1: 1, 2: 2, 3: 3}, {1: 1, 3: 3, 7: 0}]



Отредактировано Budulianin (Окт. 29, 2013 19:07:27)

Офлайн

#4 Окт. 29, 2013 19:06:46

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

nokados
Верно ли я понимаю, что она означает, что множества не могут содержать словари?
>>> hash({1:1})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'



Офлайн

#5 Окт. 29, 2013 19:22:19

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

можешь еще попробовать namedtuple вместо dict

Офлайн

#6 Окт. 29, 2013 20:48:55

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: unhashable type: 'dict'

Всем спасибо, проблему решил.



моя подпись

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version