Форум сайта python.su
Пытааюсь убрать одинаковые элементы при помощи
robots=list(set(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'
Офлайн
на stackowerflow есть ответ
TL;DR
тебе надо сделать свой FrozenDict отнаследовавшись от 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)
Офлайн
nokados
Верно ли я понимаю, что она означает, что множества не могут содержать словари?
>>> hash({1:1}) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict'
Офлайн
можешь еще попробовать namedtuple вместо dict
Офлайн
Всем спасибо, проблему решил.
Офлайн