2017-07-06 287 views
0
//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'」錯誤是什麼意思?

+0

什麼是給出這個錯誤,更具體到您的問題...請閱讀如何創建[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve),並檢查[如何提出好問題](https://stackoverflow.com/help/how-to-ask),這樣你可以增加獲得反饋和有用答案的機會。 – DarkCygnus

+0

固定代碼縮進和修正的英文語法。 – phd

回答

0

Python列表不可散列,因爲它們是可變的。您需要使用可哈希集合,而不是像元組。

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

0

基本上,當你創建一個Python dictionnary(這是在你的電話到ENUM功能最有可能發生的),鍵必須是可哈希的,這往往意味着收集需要是不變的(這意味着它們不應該被修改)。

這裏是爲什麼是這樣的情況下,更詳細的解釋:https://wiki.python.org/moin/DictionaryKeys

由於以前的答案州,你可能需要使用哈希的集合,例如一個元組解決您的示例代碼的問題。