Check out https://github.com/inveniosoftware/dictdiffer
print list(diff( {2014: [ dict(month=6, category=None, sum=672.00), dict(month=6, category=1, sum=-8954.00), dict(month=7, category=None, sum=7475.17), dict(month=7, category=1, sum=-11745.00), dict(month=8, category=None, sum=-12140.00), dict(month=8, category=1, sum=-11812.00), dict(month=9, category=None, sum=-31719.41), dict(month=9, category=1, sum=-11663.00), ]}, {2014: [ dict(month=6, category=None, sum=672.00), dict(month=6, category=1, sum=-8954.00), dict(month=7, category=None, sum=7475.17), dict(month=7, category=1, sum=-11745.00), dict(month=8, category=None, sum=-12141.00), dict(month=8, category=1, sum=-11812.00), dict(month=9, category=None, sum=-31719.41), dict(month=9, category=1, sum=-11663.00), ]}))
gives this result, which I find pretty good:
[('change', ['2014', 4, 'sum'], (-12140.0, -12141.0))]
i.e. it gives what happened: the meaning of βchangedβ, the path β[2014β, 4, βamountβ] and that it changed from -12140.0 to -12141.0.