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
,但默认值为 int
或 float
。
创建一个函数来创建一个 defaultdict
,默认为一个数字,例如:
from collections import defaultdict
def floatdict():
return defaultdict(float)
然后你可以用它来代替你之前使用的原版 dict
:
test = defaultdict(floatdict)
然后:
test['Krishna']['count'] += 1
test['Krishna']['amount'] += 10
您可以将 defaultdict
转换回 dict
和 print
它:
print(dict(test['Krishna']))
输出:
{'amount': 10.0, 'count': 1.0}
我正在尝试创建一个字典,我必须在其中不断递增一个值
所以我正在尝试以下操作:
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
,但默认值为 int
或 float
。
创建一个函数来创建一个 defaultdict
,默认为一个数字,例如:
from collections import defaultdict
def floatdict():
return defaultdict(float)
然后你可以用它来代替你之前使用的原版 dict
:
test = defaultdict(floatdict)
然后:
test['Krishna']['count'] += 1
test['Krishna']['amount'] += 10
您可以将 defaultdict
转换回 dict
和 print
它:
print(dict(test['Krishna']))
输出:
{'amount': 10.0, 'count': 1.0}