最近在写程序时,需要对数组和字典进行混合处理,暴露出如题的错误,分析如下:
1、错误代码
self_array=[1,2,3]
self_return = {'code':200, 'message':{self_array}}
print(self_return)
提示错误:
TypeError: unhashable type: 'list'
2、错误原因分析
经过一番搜索和排查,发现:原来是hash错误。
list 不使用 hash 值进行索引,故其对所存储元素没有可哈希的要求;set / dict 使用 hash 值进行索引,也即其要求欲存储的元素有可哈希的要求。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。
3、两种修改方式及对应的输出
经过排查,发现赋值的括号用错了,将{self_array}中的{}分别替换为[]与(),查看对应的结果。
(1)首先是替换为[]:
self_array=[1,2,3]
self_return = {'code':200, 'message':[self_array]}
print(self_return)
对应输出为:
{'code': 200, 'message': [[1, 2, 3]]}
json格式为:
{
'code': 200,