在 python 中添加多重集列表
Add a list of multisets in python
将 multiset
的列表合并为单个多重集的 pythonic 方法是什么?
例如,
from multiset import Multiset
set1 = Multiset('aab')
set2 = Multiset('abc')
ls = [set1, set2]
基于使用 set
s 我的猜测是:
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})
将 multiset
的列表合并为单个多重集的 pythonic 方法是什么?
例如,
from multiset import Multiset
set1 = Multiset('aab')
set2 = Multiset('abc')
ls = [set1, set2]
基于使用 set
s 我的猜测是:
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})