我要实现的编程模式是:如果集合中缺少对象,则创建一个对象 将其添加到集合中,否则更新集合中的等效对象。你知道吗
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的set没有find函数。(需要迭代集合以找到她想要的对象) 我知道我可以使用defaultdict,但我讨厌破坏PersonStats的封装,也就是说,在上面的示例中,使用person的id 班级的一方人员。你知道吗
所以我的问题是,你知道Python中的一个数据结构,它可以让我有一个无序的集合,并让我在恒定时间内找到它吗?
我还想知道我是不是想错了。
另外,如果您知道为什么Python的set没有find函数。你知道吗
可能需要使用有序集:
https://pypi.python.org/pypi/ordered-set
.index(...)
函数传递集合中的“position”。 不过,您可能希望捕获异常。你知道吗相关问题 更多 >
编程相关推荐