История изменений
Исправление i-rinat, (текущая версия) :
Три if’а можно убрать, если использовать defaultdict.
>>> from collections import defaultdict
>>>
>>> a = defaultdict(lambda: 1)
>>> dict(a)
{}
>>> a[1] += 1
>>> a[2] += 2
>>> dict(a)
{1: 2, 2: 3}
>>>
Исправление i-rinat, :
Три if’а можно убрать, если использовать defaultdict.
>>> from collections import defaultdict
>>>
>>> a = defaultdict(lambda: 1)
>>> dict(a)
{}
>>> a[1] += 1
>>> a[2] += 2
>>> dict(a)
{1: 2, 2: 3}
>>>
Кстати, зачем ты создаёшь новый states на каждую строчку, если всё равно потом складываешь значения? Выделение в отдельную функцию подтолкнуло тебя к этому решению, и теперь нужно больше кода, чтобы побороть результаты. Проще будет убрать функцию, вставить её тело прямо в цикл по строчкам. И states создавать только один раз.
Исходная версия i-rinat, :
Три if’а можно убрать, если использовать defaultdict.
>>> from collections import defaultdict
>>>
>>> a = defaultdict(lambda: 1)
>>> dict(a)
{}
>>> a[1] += 1
>>> a[2] += 2
>>> dict(a)
{1: 2, 2: 3}
>>>