Python 如何使用uuu add_uuuu添加两个dictionary对象?

Python 如何使用uuu add_uuuu添加两个dictionary对象?,python,dictionary,object,add,Python,Dictionary,Object,Add,例如,我有两个对象: 例如(['d','c','d','a']) 例如(['a','b','c','x','b','a']) 这些对象将生成以下内容的字典: {'d':2,'c':1,'a':1} {'a':2,'b':2,'c':1,'x':1} 如何添加这两个dict对象以产生这样的结果 Ex(a[2],b[2],c[2],d[2],x[1]) 两个前操作数都不应更改 所以我想出了下面的代码: def __add__(self, another): r = self._val.cop

例如,我有两个对象:

例如(['d','c','d','a'])

例如(['a','b','c','x','b','a'])

这些对象将生成以下内容的字典:

{'d':2,'c':1,'a':1}

{'a':2,'b':2,'c':1,'x':1}

如何添加这两个dict对象以产生这样的结果

Ex(a[2],b[2],c[2],d[2],x[1])

两个前操作数都不应更改

所以我想出了下面的代码:

def __add__(self, another):
    r = self._val.copy()
    for key, val in another._val.items():
        if key in r:
            r[key] += val
        else:
            r[key] = val
    return r
但这似乎不能正常工作,而且我必须通过自动检查程序来检查错误

我必须使用dunder add,并且两个Ex对象都不能更改


如有任何建议,将不胜感激

如果您的目标是添加两个词典,则可以使用“更新”
Ex dict1={'a':1,'b':2}和dict2={'a':2,'c':3},然后dict1.update(dict2)将dict2的值更新为dict1。当您打印dict1时,它将输出{'a':2,'b':2,'c':3}

使用计数器来执行类似的操作,请记住组合优于继承(或复合重用原则),因此您的前类dunder add在使用计数器时应如下所示:

from collections import Counter


class Ex:
    def __init__(self, characters):
        self.counter = Counter(characters)

    def get_result(self):
        return dict(self.counter.items())

    def __add__(self, other):
        if not isinstance(other, Ex):
            return NotImplemented
        result = Ex([])
        result.counter = self.counter + other.counter
        return result


ex_1 = Ex(['d', 'c', 'd', 'a'])
ex_2 = Ex(['a', 'b', 'c', 'x', 'b', 'a'])
ex_3 = ex_1 + ex_2

print(ex_1.get_result())  # {'d': 2, 'c': 1, 'a': 1}
print(ex_2.get_result())  # {'a': 2, 'b': 2, 'c': 1, 'x': 1}
print(ex_3.get_result())  # {'d': 2, 'c': 2, 'a': 3, 'b': 2, 'x': 1}

你能将问题中的代码示例扩展为a吗?我认为结果必须是
Ex(a[3]…)
(1+2)