我在python中有一个计数器列表:
[Counter({12.011: 30.0, 15.999: 2.0}),
Counter({12.011: 12.0, 15.999: 2.0}),... Counter({12.011: 40.0,
15.999: 5.0, 79.904: 5.0})]
如何查找每个Counter元素的计数 . 计数器给我一个不可用类型的错误 . 我想的另一种方法是在嵌套的for循环中遍历列表,检查每个计数器是否等于列表中的任何其他计数器并相应地增加字典 . 有更好的解决方案吗?
2 回答
在Python <= 3.6中,你最好的选择可能是将每个
Counter
与其他Counter
进行比较 .在Python> = 3.7中有更好的方法 . 因为
Counter
是dict
的子类,并且dict
现在保持其顺序,所以可以使用每个Counter
对象的字符串表示作为其哈希 .这有点hacky但它的工作原理:
您可以将每个Counter转换为key,value(items)元组的冻结集,然后将其用作传递给Counter的元素(因为frozenset是可清除的),例如:
Output