Мне нужен тип данных типа bag/multiset в Python. Я понимаю коллекции. Часто используется для этой цели. Но операторы сравнения, похоже, не работают:Сравнение счетчиков Python как типа Bag
In [1]: from collections import Counter
In [2]: bag1 = Counter(a=1, b=2, c=3)
In [3]: bag2 = Counter(a=2, b=2)
In [4]: bag1 > bag2
Out[4]: True
Это кажется ошибкой для меня. Я ожидал, что операторы с меньшим и большим числом, чем операторы, будут выполнять сопоставления подмножеств и суперсети. Но если это так, то bag1 > bag2
будет ложным, потому что bag2
содержит дополнительные 'a'
. На объектах Counter также нет методов подмножества/надмножества. Поэтому у меня есть два вопроса:
- Какая сравнительная логика используется для объектов Counter?
- Как сравнить объекты Counter для подмножества, надмножества, правильного подмножества и собственного суперсета?
Вы читали документацию? – jonrsharpe
Да, если вы имеете в виду здесь: https://docs.python.org/2/library/collections.html#collections.Counter Они описывают это как мешок/мультимножество, я предположил, что это означает, что операторы сравнения будут иметь смысл. –
Я не видел связанный с ним вопрос, и я вижу, как это связано, но у него есть пара вопросов: нет описания того, как реализовать правильное подмножество, хотя я предполагаю, что '<=' и '! =', хотя я не знаю ow, если есть лучший способ реализовать и расшифровать, хотя я думаю, что это инверсия подмножества. Также в принятом ответе есть опечатка, на которую комментарий обращает внимание. Не уверен, что кто-то может это изменить. –