python中set集合如何决定是否重复?
生活随笔
收集整理的這篇文章主要介紹了
python中set集合如何决定是否重复?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://heipark.iteye.com/blog/1743819
看下面代碼,兩個值相同的Item對象,添加到set中被認為是兩個對象。
class Item(object):def __init__(self, foo, bar):self.foo = fooself.bar = bardef __repr__(self):return "Item(%s, %s)" % (self.foo, self.bar)print set([Item('1', '2'), Item('1', '2')])# 輸出: set([Item(1, 2), Item(1, 2)])
數據結構中HASH表的設計思路是:
?
在python中如果我們自定義class,則需要添加__hash__和__eq__兩個方法,前者用于決定當前元素在哪個桶,后者決定當前元素是否在桶中已經存在。
?
修改后的code如下:
class Item(object):def __init__(self, foo, bar):self.foo = fooself.bar = bardef __repr__(self):return "Item(%s, %s)" % (self.foo, self.bar)def __eq__(self, other):if isinstance(other, Item):return ((self.foo == other.foo) and (self.bar == other.bar))else:return Falsedef __hash__(self):return hash(self.foo + " " + self.bar)print set([Item('1', '2'), Item('1', '2')])# 輸出:set([Item(1, 2)])
總結
以上是生活随笔為你收集整理的python中set集合如何决定是否重复?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中List的sort方法(或
- 下一篇: Python 去除序列s中的重复元素