from collections import Counter

a = Counter()
b = Counter('abrakadabra')
c = Counter({'red': 2, 'blue': 4})
d = Counter(cats=4, dogs=5)
print(a)
print(b)
print(c)
print(d)
print(b[
          'z'])  # выводит кол-во повторений произвольного элемента(при отсутствии = 0)
b['z'] = 0  # добавляем элемент
print(b)
print(list(
    b.elements()))  # возвращает список элементов, если кол-во повторов != 0
print(b.most_common(
    3))  # возвращает пары ключ-значение отсортированные по частоте повторений
g = Counter(a=4, b=6, c=-2, d=0)
f = Counter(a=1, b=2, c=3, d=-2, e=-6)
g.subtract(f)  # вычитает колл f из колл g
print(g)
print('*' * 79)
# Можно преобразовывать Counter в множествоб ловарь и т.д
print(set(g))
print(dict(g))
# Метод clear очищает объект
g.clear()
print(g)
# С коллекциями можно проводить математические и логические операции
print('*' * 79)
x = Counter(a=3, b=1)
y = Counter(a=1, b=2)
print(x + y)  # обычное сложение   только значения > 0
print(x - y)  # вычитание возвращает только значения > 0
print(x & y)  # возврацает количество значений и в первом и во втором объектах
print(
    x | y)  # возвращает   количество значеий или в первом или во втором слагаемом
# Унарные операции
print('*' * 79)
z = Counter(a=2, b=-4)
print(+z)   # Возвращает только положительные значения
print(-z)    # Возвращает только отрицательные значенияб меняя их знак
