我有一个sortdict,我对这些值的累积总和感兴趣:
>>> from blist import sorteddict
>>> import numpy as np
>>> x = sorteddict({1:1, 2:2, 5:5})
>>> zip(x.keys(), np.cumsum(x.values()))
[(1, 1), (2, 3), (5, 8)]
但是,我经常需要更新字典,因此需要重新计算累积总和:
>>> x[4] = 4
>>> zip(x.keys(), np.cumsum(x.values()))
[(1, 1), (2, 3), (4, 7), (5, 12)]
>>> x[3] = 3
>>> zip(x.keys(), np.cumsum(x.values()))
[(1, 1), (2, 3), (3, 6), (4, 10), (5, 15)]
我想知道是否有一些聪明的方法可以有效地维持累积金额,而不是不断地重新计算累积金额?
注意
>>> import sys
>>> sys.version
'2.7.11 (default, Jun 15 2016, 17:53:20) [MSC v.1800 32 bit (Intel)]'
一般来说我的键和值也不一样 – 我的例子里只是懒惰