【问题标题】:What does "unhashable type: 'list'" error mean?“不可散列的类型:'list'”错误是什么意思?
【发布时间】:2017-07-06 20:55:24
【问题描述】:
//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

这给了我一个错误“不可散列的类型:'list'”。这是什么意思,我该如何解决?

【问题讨论】:

标签: python


【解决方案1】:

Python 列表不可散列,因为它们是可变的。您需要改用可散列的集合,例如元组。

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

【讨论】:

    【解决方案2】:

    基本上,当您在 python 中创建字典时(这很可能发生在您对 ENUM 函数的调用中),键需要是可散列的,这通常意味着集合需要是不可变的(这意味着它们不应该是可以修改)。

    这里有一个更详细的解释为什么会这样:https://wiki.python.org/moin/DictionaryKeys

    如上一个答案所述,您可能需要使用可散列集合(例如元组)来解决示例代码中的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-27
      • 2019-01-07
      • 1970-01-01
      • 2022-07-22
      • 2018-08-03
      • 2021-12-17
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多