LINUX.ORG.RU

История изменений

Исправление 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}
>>>