Python错误处理

Python错误处理,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我试图用以下代码将列表转换为集合: set1=set(list1) 代码运行正常,但突然出现以下错误 set1=set(list1) TypeError: unhashable type: 'list' 请让我知道我可以如何解决 有时一些运行良好的程序在没有参数更改的情况下突然出现错误,我如何调试它?您的列表包含另一个列表: >>> set([['contained list'], 1, 2]) Traceback (most recent call last): Fi

我试图用以下代码将列表转换为集合:

set1=set(list1)
代码运行正常,但突然出现以下错误

set1=set(list1)
TypeError: unhashable type: 'list'
请让我知道我可以如何解决


有时一些运行良好的程序在没有参数更改的情况下突然出现错误,我如何调试它?

您的列表包含另一个列表:

>>> set([['contained list'], 1, 2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

您的错误表明您的列表包含一个列表。列表是可变的,因此不能在集合或字典中使用散列。解决方法之一是使用tuplesome_list将列表转换为元组,但如果它们嵌套太多,则会变得更复杂。

列表1的内容是什么?我有点不高兴你的问题得到了这么多的反对票,如果您没有立即意识到包含另一个列表的列表是导致错误的原因,则错误消息可能会令人困惑。每个人都能给新用户一点休息吗?很抱歉让meta出现在这里,Martjin,但是考虑到海报的传记和历史,我们这里没有一个新手,而是应该知道如何阅读常见问题解答和之前帖子中提出的建议,但似乎没有。不过,我没有投反对票,主要是因为我没有。这个问题太不完整了。@msw:好吧,你说得有道理;我只看到了1分的名声,就下结论了。不过,我可以看出错误消息是如何让新手感到困惑的,而且有一种可怕的倾向,就是在堆栈溢出时对dumbness进行向下投票。我的列表不包含另一个列表。“这就是问题所在,先生。”SUBHABRATA:错误消息似乎表明情况并非如此。如果没有更多的代码,我们将无法为您提供更多帮助。使用异常处理程序确定内容,并更新答案。使用try\u except是一个好方法。我正在做一个列表,操作它,再拿一个空白列表,附加到空白列表中,现在把它转换成SET,简单的代码-我有办法解决,但这有点原始,我在想一点专家的帮助。我会查的。谢谢和问候,Subhabrata。
try:
    set1=set(list1)
except TypeError:
    print 'list1 not hashable? contents: %r' % list1
    # optionally: import pdb; pdb.set_trace()
    raise