“unhashable type:'list'”错误是什么意思?

时间:2017-07-06 20:55:24

标签: python

//database Postgresql

logging_level_ENUM = ['critical', 'error', 'warning', 'info', 'debug']

loglevel = db.Column(postgresql.ENUM(logging_level_ENUM, 
                     name='log_level_to_ENUM'), 
                     default=logging_level_ENUM[3])
//python module

if i in logging_level_ENUM:
    print i

这给了我一个错误“unhashable type:'list'”。这是什么意思,我该如何解决?

2 个答案:

答案 0 :(得分:0)

Python列表不可清除,因为它们是可变的。你需要使用一个hashable集合,就像一个元组。

logging_level_ENUM = ('critical', 'error', 'warning', 'info', 'debug')

答案 1 :(得分:0)

基本上,当你在python中创建一个dictionnary时(很可能在你对ENUM函数的调用中发生),键需要是可清除的,这通常意味着集合需要是不可变的(这意味着它们不应该是能够被修改。)

以下是对此案例的详细解释:https://wiki.python.org/moin/DictionaryKeys

正如前面的回答所述,你可能需要使用一个可清除的集合(如元组)来解决示例代码中的问题。