Python集合,用于create if missing,update if existing

2024-04-25 19:34:42 发布

您现在位置: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的set没有find函数。(需要迭代集合以找到她想要的对象) 我知道我可以使用defaultdict,但我讨厌破坏PersonStats的封装,也就是说,在上面的示例中,使用person的id 班级的一方人员。你知道吗

所以我的问题是,你知道Python中的一个数据结构,它可以让我有一个无序的集合,并让我在恒定时间内找到它吗?
我还想知道我是不是想错了。
另外,如果您知道为什么Python的set没有find函数。你知道吗


Tags: 对象keyselfidreturninitdefstats