Накапливая заказанныйДикт

Вот идея: у меня заказанный Dict так (упрощенно):

{'012013': 3, '022013': 1, '032013': 5}

что я хочу сделать, это сделать все значения, накопленные путем какой-то итерации через него. Например, я хочу, чтобы конечный результат был похож на это (на примере выше)

{'012013': 3, '022013': 4, '032013': 9}

Я думал что-то в этом роде, но ясно, что должен быть способ определить предыдущие ключи.

for key, value in month_dictionary.iteritems():
   month_dictionary[key] = month_dictionary[key] + month_dictionary[previous_key]

Я предполагаю, что это не плохая практика, потому что orderDict подразумевает, что он поддерживает порядок, поэтому он должен быть стабильным, нет? Как бы я поступил так?

благодарю вас

1 ответ

Решение

Отслеживание итогов:

total = 0
for key, value in month_dictionary.iteritems():
    total += value
    month_dictionary[key] = total

Заказ не будет затронут; только новые ключи добавят к порядку.

Демо-версия:

>>> from collections import OrderedDict
>>> month_dictionary = OrderedDict((('012013', 3), ('022013', 1), ('032013', 5)))
>>> total = 0
>>> for key, value in month_dictionary.iteritems():
...     total += value
...     month_dictionary[key] = total
... 
>>> month_dictionary
OrderedDict([('012013', 3), ('022013', 4), ('032013', 9)])
Другие вопросы по тегам