我想显示在一个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