je suis en train de faire l'exo sur les caches et je me retrouve bloqué a une exception
def cache(fonction):
dico={}
def nouvelle_fonction(*arg,**kwarg):
liste=[]
liste.append(list(arg))
liste.append([(cle,valeur) for cle, valeur in kwarg.items()])
if liste in dico:
print(dico[liste])
else:
dico[liste]=fonction(arg,kwarg)
print(dico[liste])
return nouvelle_fonction
@cache
def alea(nb):
liste=[]
for i in range(nb):
liste.append(randint(0,1000))
return liste
tout va bien jusqu'a ce que j'appelle alea:
alea(1000)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
alea(1000)
File "C:\Python33\cache.py", line 7, in nouvelle_fonction
if liste in dico:
TypeError: unhashable type: 'list'
a ce que j'ai compris le dictionnaire n'accepte que des objets "hashable" comme valeur or la variable "liste" ne contient que des listes et des tuples, et j'ai beau vouloir changer les types (set,list,tuple) rien ne marche. Y a t'il une raison à cette exception ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.