我想顯示在一個GUI列表框的一些信息。我在我的MVC的僅模型部分寫了一個測試方法,它輸出我想要的信息;但是,當我將該代碼轉移到完整的GUI時,它會引發錯誤。PYTHON - Unhashable名單
這裏有兩段代碼:
型號:(注意,此方法針對一類Products()
書面)
def test(self):
for key in self._items_list:
print self.get_item(key) #this refers to the get_item function of the Products class:
def get_item(self, key):
return self._items_list[key] # items_list is a dictionary
所以,這個返回輸出我想放在我的列表框中。
這裏是我的代碼傳輸到我的GUI(這是一類我定義它從Control繼承):
def refreshData(self):
for keys in self._productslist: #this productslist is equivalent to items_list
disp = self._products.get_item(keys) #so i can call the method from the Product class
self.insert(END, dips)
這引發了我下面的錯誤,當我嘗試打開並顯示文件:
...in get_item
return self._items_list[key]
TypeError: unhashable type: 'list'
對不起,這是漫長的,可能非常混亂,但本質上我想知道爲什麼我得到的錯誤代碼的完整版本的方法,而不是在孤立的模型。
所有相關的代碼是相同的,據我所知。
任何想法將不勝感激!
列表不能用作成套字典或值鍵,因爲它們不支持哈希 - 這是一個設計決策,Python已經執行(大概是因爲列表是可變的,這可能會導致危險的意外)。 – 2012-10-01 00:26:47
(檢查什麼'key'計算 - 它可能不會如預期那樣 - 那麼*爲錯誤信息搜索*和兩件事情聯繫在一起:-) – 2012-10-01 00:28:03
但爲什麼難道不存在處於孤立的模型,代碼中的錯誤?那是什麼讓我感到困惑! 另外,「list」是一個我稱爲self._items_list的字典,所以我調用存儲在[key]中的字典的值。是嗎? – chris