出现这种问题,一般是因为字典的键值列表中出现了列表,也即列表套列表。此时要检查键列表中是否有子列表,并将其改为非列表形式。
进一步说明:可哈希的数据类型,即不可改变的数据结构(字符串str、元组tuple、对象集objects、int、float),不可哈希的数据类型,即可改变的类型:list、set、dict。
在上面问题中,就是因为字典的键值不能随意更改所以不能是列表。简单问题示例如下:
正确代码:
a = ['12_ab.jg','4a_c.hjj','4a_d.hjh']
b = ['ab','ab','ab']
print(dict(zip(a,b)))
{'12_ab.jg': 'ab', '4a_c.hjj': 'ab', '4a_d.hjh': 'ab'}
a = ['12_ab.jg','4a_c.hjj','4a_d.hjh']
b = [['ab'],'ab','ab']
print(dict(zip(a,b)))
{'12_ab.jg': ['ab'], '4a_c.hjj': 'ab', '4a_d.hjh': 'ab'}
错误代码:
a = [['12_ab.jg'],'4a_c.hjj','4a_d.hjh']
b = ['ab','ab','ab']
print(dict(zip(a,b)))
TypeError: unhashable type: 'list'