тест
if year_month in dict1:
"защищает" dict1
от обновления при чтении файла. Поэтому, когда вы пишете файл, вы не получаете данных.
Полагаю, вы хотите удалить другую часть:
if year_month in dict1:
if(row[4].isnumeric() and int(row[4])!= -1):
dict1[year_month]+= int(row[4])
else:
if(row[4].isnumeric() and int(row[4])!=-1):
dict1[year_month]=int(row[4])
else:
dict1[year_month]=0
но есть более разумные подходы, такие как collections.Counter
:
import collections
dict1 = collections.Counter()
затем в цикле, просто проверка, чтобы убедиться, что данные являются числом, тогда:
if(row[4].isnumeric() and int(row[4])!= -1):
dict1[year_month] += int(row[4])
else:
dict1[year_month] += 0 # add nothing, but "creates" the key if doesn't exist
вам нужна часть else
(которая кажется неуклюжей, да, я знаю), поэтому вы создаете все ключи месяца, даже пустые, иначе в вашем CSV-файле будут дыры. альтернативой является не зацикливание клавиш при написании словаря (дикты не упорядочены до Python 3.6), а жестко закодированные значения месяца. Counter
выдаст 0 для несуществующего ключа.