Quando e perché il verificarsi del TypeError: tipo di calcolo dell'hash: 'list'?

voti
-1

Il mio codice sorgente è il seguente ed è in Python Scripting Language:

d = [frozenset({[[1]*2, (2, 3)*3]*4}), {5, }, {6: '', 9:  }]
print(d, sep = '\t')
for k in d:
    print(k, type(k), sep = '\t')

Il mio messaggio di output è il seguente:

C:\Program Files\Python37\python.exe E:/Observations/LISTS/basics.py
Traceback (most recent call last):
  File E:/Observations/LISTS/basics.py, line 144, in <module>
    d = [frozenset({[[1]*2, (2, 3)*3]*4}), {5, }, {6: '', 9:  }]
TypeError: unhashable type: 'list'

Process finished with exit code 1
È pubblicato 14/12/2019 alle 19:56
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Questo accade a causa della lista all'interno del dizionario, che è una lista che non può essere hashing. Che può essere risolto mediante la conversione delle liste nidificate interne ad una tupla come questo,

d = [frozenset({((1)*2, (2, 3)*3)*4}), {5, }, {6: '', 9: " "}]
Risposto il 14/12/2019 a 20:10
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more