3

本质上,这就是我想要做的:

我有一组要添加对象的集合。这些对象有它们自己的相等方法,并且一个集合不应该有一个元素等于集合中的另一个元素。但是,当尝试插入一个元素时,如果它等于另一个元素,我想记录这两个元素的合并版本。也就是说,对象具有在其相等方法中未考虑的“辅助”字段。添加完内容后,我希望元素的“辅助”字段包含我尝试添加的相等元素的所有“辅助”字段的组合。

我的想法是,好吧,在将一个元素添加到集合之前,检查它是否已经在集合中。如果是这样,请将其从集合中拉出,组合两个元素,然后将其放回。但是,Python 集合中的 remove 方法不返回任何内容,而 pop 方法返回任意元素。

我可以用 Python 中的集合做我想要做的事情,还是我在叫错树(什么是正确的树?)

4

1 回答 1

3

听起来你想要一个defaultdict

from collections import defaultdict
D = defaultdict(list)
D[somekey].append(auxfield)

编辑:要使用您的合并功能,您可以结合人们在评论中给出的代码

D = {}
for something in yourthings:
    if something.key in D:
        D[something.key] = something.auxfield
    else:
        D[something.key] = merge(D[something.key], something.auxfield)
于 2013-05-28T23:08:37.223 回答