python使用set来去重碰到TypeError: unhashable type
2013-11-16 01:18 会被淹死的鱼 阅读(29666) 评论(1) 编辑 收藏 举报新版:Python 的 unhashable type 错误分析及解决
python使用set来去重是一种常用的方法. 一般使用方法如下:
# int a = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0] print "orginal:", a print list(set(a)) # str a = [str(i) for i in a] print "orginal:", a print list(set(a))
某些情况会碰到类似这样的错误: TypeError: unhashable type: 'list'
list是可变类型, 无法进行hash, tuple就可以解决这个问题
# nested list a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0], [1, 2]] print "orginal:", a try: print list(set(a)) # TypeError: unhashable type: 'list' except TypeError, e: print "Error:", e # tuple list a = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 0), (1, 2)] print "orginal:", a print list(set(a))
希望可以帮助碰到类似问题的人.
作者:icejoywoo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
短网址: http://goo.gl/ZiZCi