Traceback (most recent call last):
File "<pyshell#80>", line 1, in <module>
do_work()
File "C:\pythonwork\readthefile080410.py", line 14, in do_work
populate_frequency5(e,data)
File "C:\pythonwork\readthefile080410.py", line 157, in populate_frequency5
data=medications_minimum3(data,[drug.upper()],1)
File "C:\pythonwork\readthefile080410.py", line 120, in medications_minimum3
counter[row[11]]+=1
TypeError: unhashable type: 'list'
Je reçois l'erreur ci-dessus sur cette ligne:python: erreur de type unhashable
data=medications_minimum3(data,[drug.upper()],1)
(J'ai aussi essayé drug.upper() sans parenthèses)
Voici un aperçu de cette fonction:
def medications_minimum3(c,drug_input,sample_cutoff): #return sample cut off for # medications/physician
d=[]
counter=collections.defaultdict(int)
for row in c:
counter[row[11]]+=1
for row in c:
if counter[row[11]]>=sample_cutoff:
d.append(row)
write_file(d,'/pythonwork/medications_minimum3.csv')
return d
Est-ce que quelqu'un sait ce que je fais mal ici?
Je sais que ce doit être mauvais est la façon dont je fais appel à cette fonction, parce que j'appelle cette fonction à partir d'un emplacement différent et il fonctionne très bien:
d=medications_minimum3(c,drug_input,50)
Merci beaucoup pour votre aide!
Pourquoi avez-vous les crochets entourant '[drug.upper()]' dans l'appel défaillant? –
Et il n'est pas non plus utilisé dans la fonction, il n'y a pas de référence à drug_input – jcubic
@jcubic: Bonne prise. Cela signifie probablement que le code a été tellement modifié pour être publié ici qu'il ne vaut rien. –