在 python 中添加多重集列表

Add a list of multisets in python

multiset 的列表合并为单个多重集的 pythonic 方法是什么?

例如,

from multiset import Multiset

set1 = Multiset('aab')
set2 = Multiset('abc')
ls = [set1, set2]

基于使用 sets 我的猜测是:

Multiset.add(*ls)

这给出了一个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/multiset.py", line 931, in add
self._elements[element] += multiplicity
TypeError: unhashable type: 'Multiset'

是否有比 for 循环更好的方法,如下所示?

def add_multisets(ls):
    result = Multiset()
    for i in ls:
        result += i
    return result

>>> add_multisets(ls)
Multiset({'a': 3, 'b': 2, 'c': 1})

您可以使用 Multiset.combine(*ls) 即

from multiset import Multiset
set1 = Multiset('aab')
set2 = Multiset('abc')
ls = [set1, set2]
x = Multiset.combine(*ls)
print(x)  # Multiset({'a': 3, 'b': 2, 'c': 2})