在Python中检索特定的set元素

2024-04-25 08:07:25 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上这就是我要做的:

我有一个可以添加对象的集合。这些对象有自己的相等方法,并且一个集合中的元素不应该等于集合中的另一个元素。但是,当尝试插入一个元素时,如果它等于另一个元素,我想记录两个元素的合并版本。也就是说,对象有一个“aux”字段,在其相等方法中没有考虑该字段。当我添加完东西后,我希望元素的“aux”字段包含我尝试添加的相等元素的所有“aux”字段的组合。你知道吗

我的想法是,在向集合中添加元素之前,检查它是否已经在集合中。如果是这样的话,把它从集合中拉出来,把这两个元素结合起来,然后再放回去。但是,Python集中的remove方法不返回任何内容,pop方法返回任意元素。你知道吗

我能用Python中的set做我想做的事情吗,还是我选错了树(什么是对的树?)你知道吗


Tags: 对象方法版本元素内容记录事情pop
1条回答
网友
1楼 · 发布于 2024-04-25 08:07:25

听起来你想要个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)

相关问题 更多 >