0
我想要實現的編程模式是:創建一個對象,如果它從集合中缺失 將其添加到集合中,否則更新集合中的等效對象。Python集合創建如果丟失,更新(如果存在)
class PersonStats(object):
def __init__(self, i):
super(PersonStats, self).__init__()
self.id = i
self.stats = 0
def update_stats(self):
self.stats += 1
def __key(self):
return self.id
def __eq__(self, y):
return self.__key() == y.__key()
def __hash__(self):
return hash(self.__key())
s = set_like_collection()
special_person = PersonStats(22222)
r = s.find(special_person)
if r is not None:
r.update_stats()
else:
s.add(r)
我很驚訝地發現Python的集合沒有find函數。 (其中一個需要遍歷集合以查找她想要的對象) 我知道我可以使用defaultdict,但我討厭打破PersonStats的封裝,也就是說,在上面的例子中,使用人員ID爲 的PersonStats類。
所以我的問題是你知道在Python中的數據結構,讓我有一個unordered_set,並讓我在它的恆定時間?
也想知道如果我想這一切都是錯誤的。
此外,如果你知道爲什麼Python的集合沒有查找功能。
要查找某個對象是否在使用'in'的集合中,例如'my in_set'中。 – nbro
'find'僅在它返回對象中的位置時纔有意義。由於'set'是無序的,'in'足以告訴你對象是否在集合中。 –
而且''是恆定的時間。 – Denziloe