Палиндром: возвращение

Что нужно сделать

Для Python существует множество различных библиотек для работы с данными, причём как встроенных, так и внешних. С некоторыми из них мы уже работали, например с модулем collections, когда использовали специальный класс OrderedDict, с помощью которого делали упорядоченный словарь. Конечно же, в этой библиотеке есть и другие возможности (на самом деле их совсем немного). Вот официальная документация: collections — Container datatypes.

Используя модуль collections и новые знания о функциях, реализуйте функцию can_be_poly, которая принимает на вход строку и проверяет, можно ли получить из неё палиндром.

Пример кода:

print(can_be_poly('abcba'))
print(can_be_poly('abbbc'))

Результат:

True
False

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Переменные, функции и собственные методы классов имеют значащие имена, не abcd.
  • Решение опирается на использование лямбда-функций.
  • Классы и методы/функции имеют прописанную документацию (хотя бы минимальную).
  • Есть аннотация типов для методов/функций и их аргументов (кроме args и kwargs). Если функция/метод ничего не возвращают, то используется None.
from collections import Counter

def can_be_poly(word: str) -> bool:
    '''Функция сравнивает остаток от деления длины слова
    с суммой остатка от деления полученных счетчиков букв'''
    return len(word) % 2 == sum(value % 2 for value in Counter(word).values())


if __name__ == '__main__':
    print(can_be_poly('abcba'))
    print(can_be_poly('abbbc'))