sazhyk, медленный, результат выполнения не всегда очевидный (например если не находит что-то, то возвращает None, а не кидает исключение), вроде как не всегда правильно разбирает дерево, хотя я с таким ни разу не сталкивался. Мне его синтаксис нравится больше, чем голый lxml+xpath.
counter возвращает словарь. ну почти словарь, если надо то конвертируется в обычный словарь в одну строку. словарь - неупорядоченная структура данных. работать с ними надо, как с обычными значениями словаря.
Если изначально писать код в пичарме, таких проблем возникнуть не может. На крайний случай он умеет фиксить кривые отступы - https://www.jetbrains.com/help/pycharm/changing-in...
А в остальном на вкус и цвет. Кто-то в виме сидит и не понимает, зачем нужен редактор кода, который запускается дольше 100 миллисекунд.
приятно осознавать, что я не единственный, кто не понял, что swapcase - это встроенная функция) интересно кому и зачем пришло в голову это в стандартную библиотеку запихнуть