【发布时间】:2016-10-28 01:55:12
【问题描述】:
我正在使用下面的代码来统计一个特定数字在numpy数组中出现的次数,对字典进行降序排序然后返回
km_0 = [indian,chinese,italian,mexican,indian,indian,chinese,italian] #numpy array
#The ord_dict should be like this {indian:3, chinese:2, italian:2, mexican:1}
def labels(cluster):
label_count ={}
for i in cluster[0]:
if i in label_count:
label_count[i] += 1
else:
label_count[i] =1
ord_dict = OrderedDict(sorted(label_count.items(), key=lambda kv:kv[1], reverse=True))
return ord_dict
函数调用
lc = labels(km_0)
但是,它会抛出以下错误
<ipython-input-8-72f0a128bdd4> in labels(cluster)
9 label_count ={}
10 for i in cluster[0]:
---> 11 if i in label_count:
12 label_count[i] += 1
13 else:
TypeError: unhashable type: 'list'
【问题讨论】:
-
打印
j的值,它的类型是list -
首先
j是未定义的,你的意思是i,其次你想看看j是字典label_count还是value的键,我是猜测键。 -
你需要告诉我们
km_0是什么。 -
你想要
for j in cluster[0]:而不是i吗? -
模拟你的问题的运行示例应该很容易。就目前而言,您希望我们找到您未显示的代码中的错误。那成功率不高!
标签: python python-3.x pandas