python使用set來去重碰到TypeError: unhashable type


新版: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))

 希望可以幫助碰到類似問題的人.

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM