python defaultdict 和 increment/aggregate 一个值

python defaultdict and increment/aggregate a value

我正在尝试创建一个字典,我必须在其中不断递增一个值

所以我正在尝试以下操作:

from collections import defaultdict
test = defaultdict(dict)
for item in debitlist:
    if not something:
        test[item['name']]['count'] += 1
        test[item['name']]['amount'] += item['name']['amount']

我正在尝试获取像

这样的字典
{ "Krishna" : { "count" : totalcount, "amount" : totalamount } }

我遇到了计数错误。如何解决这个问题并得到我想要的

您需要内部字典也是 defaultdict,但默认值为 intfloat

创建一个函数来创建一个 defaultdict,默认为一个数字,例如:

from collections import defaultdict

def floatdict():
    return defaultdict(float)

然后你可以用它来代替你之前使用的原版 dict:

test = defaultdict(floatdict)

然后:

test['Krishna']['count'] += 1
test['Krishna']['amount'] += 10

您可以将 defaultdict 转换回 dictprint 它:

print(dict(test['Krishna']))

输出:

{'amount': 10.0, 'count': 1.0}