[PYTHON] 파이썬, TypeError : unshashable 타입 : 'list'
PYTHON파이썬, TypeError : unshashable 타입 : 'list'
내 프로그램에서 다음과 같은 오류가 나타납니다. 역 추적:
Traceback (most recent call last):
File "C:\Python33\Archive\PythonGrafos\Alpha.py", line 126, in <module>
menugrafos()
File "C:\Python33\Archive\PythonGrafos\Alpha.py", line 97, in menugrafos
zetta = Beta.caminhografo(grafo,va,vb)
File "C:\Python33\Archive\PythonGrafos\Beta.py", line 129, in caminhografo
if ([vo, a]) in vat == ([vo,vq]) in vat:
TypeError: unhashable type: 'list'
이 프로그램은 잘 작동하는 인접 목록을 작성한 다음 정점 VA와 VB 사이에 경로가 있는지 검색합니다. 인접한 정점을 올바르게 추가 할 수 있도록 collection / defaultdict에 사전 목록을 사용했습니다.
문제는 프로그램이 끝날 때 목록이 작성된 후 if 절에 있습니다. 나는 꼭지점 사이에 유효한 경로가 있는지 알아보기 위해 dict과 함께 if 절을 적절히 사용하는 방법을 찾을 수 없습니다. 또한 grafo는 그래프 클래스입니다.
다음은 코드입니다.
class graph:
v = 0
a = 0
node = []
class vertex:
ta = []
adj = {}
def caminhografo(grafo, va, vb):
vat = defaultdict(list)
i = 0
a = 0
z = 0
vo = int(va)
vq = int(vb)
vz = int(va)
vw = int(vb)
x = len(grafo.node)
if vz < vw:
for vz in range (vw+1):
a = 0
x = len(grafo.node)
for a in range (x):
if [int(vz),int(a)] in grafo.node:
vat[vz].append(a)
if vz > vw:
while vz > vw:
a = 0
x = len(grafo.node)
for a in range (x):
if[int(va),int(a)] in grafo.node:
vat[vz].append(a)
vz = vz - 1
a = 0
x = len(grafo.node)
print(vat)
for a in range (x):
if ([vo, a]) in vat == ([vo,vq]) in vat:
print("""
==============================================
Existe Caminho
==============================================
""")
break
elif ([vo,a]) in vat:
vo = a
else:
print("""
==============================================
Não Existe Caminho
==============================================
""")
break
도움을 주셔서 감사합니다.
해결법
-
==============================
1.문제는 dict 키가 불변 일 필요가 있기 때문에 dict에서 키를 목록으로 사용할 수 없다는 것입니다. 대신 튜플을 사용하십시오.
문제는 dict 키가 불변 일 필요가 있기 때문에 dict에서 키를 목록으로 사용할 수 없다는 것입니다. 대신 튜플을 사용하십시오.
이것은 목록입니다 :
[x, y]
이것은 튜플입니다.
(x, y)
대부분의 경우에, (와)는 선택적이다. 왜냐하면 실제로 튜플을 정의하는 것이기 때문에 ([] 나 {}에 의해 둘러싸이지 않거나 함수 인자로 사용되는 한).
파이썬 튜토리얼에서 튜플에 관한 섹션이 유용하다는 것을 알 수있다.
그리고 사전에 대한 섹션에서 :
오류 메시지가 의미하는 것이 궁금한 경우 목록에 대한 해시 함수가 내장되어 있지 않으므로 (설계 상), 사전은 해시 테이블로 구현되기 때문에 불평합니다.
from https://stackoverflow.com/questions/19371358/python-typeerror-unhashable-type-list by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 클래스 변수는 파이썬의 모든 인스턴스에서 공유됩니까? [복제] (0) | 2018.10.08 |
---|---|
[PYTHON] 파이썬에서리스트 삽입하기 [duplicate] (0) | 2018.10.08 |
[PYTHON] 내 전역 변수에 파이썬으로 할당 할 수없는 이유는 무엇입니까? (0) | 2018.10.08 |
[PYTHON] 람다 식을 사용하여 pyqt의 슬롯 연결 (0) | 2018.10.08 |
[PYTHON] 초심자 파이썬 : 동일한 파일 읽기 및 쓰기 (0) | 2018.10.08 |