如何计算嵌套字典中的项目
How to count items in a nested dictionary
我想收集每个日期的结果。
对于每个日期增量传递失败结果,如果不存在则在字典中添加日期。
我应该使用 dict in dict 还是 defaultdict?
例如dates= {'2018-03-20': [{'pass': 2}, {'fail': 3}]}
我想添加新日期(如果不在日期中)并更新特定日期的 'pass'/'fail' 值。
正如@Jean-FrançoisFabre 指出的那样,最简单的方法是使用 defaultdict
个 Counter
个对象。
collections
documentation 包含有关这些工具的详细信息。
from collections import defaultdict, Counter
d = defaultdict(Counter)
d['2018-03-20']['pass'] += 1
d['2018-03-20']['fail'] += 1
d['2018-03-20']['pass'] += 1
d['2018-04-20']['pass'] += 1
d['2018-05-20']['pass'] += 1
d['2018-04-20']['fail'] += 1
结果:
defaultdict(collections.Counter,
{'2018-03-20': Counter({'fail': 1, 'pass': 2}),
'2018-04-20': Counter({'fail': 1, 'pass': 1}),
'2018-05-20': Counter({'pass': 1})})
我想收集每个日期的结果。
对于每个日期增量传递失败结果,如果不存在则在字典中添加日期。 我应该使用 dict in dict 还是 defaultdict?
例如dates= {'2018-03-20': [{'pass': 2}, {'fail': 3}]}
我想添加新日期(如果不在日期中)并更新特定日期的 'pass'/'fail' 值。
正如@Jean-FrançoisFabre 指出的那样,最简单的方法是使用 defaultdict
个 Counter
个对象。
collections
documentation 包含有关这些工具的详细信息。
from collections import defaultdict, Counter
d = defaultdict(Counter)
d['2018-03-20']['pass'] += 1
d['2018-03-20']['fail'] += 1
d['2018-03-20']['pass'] += 1
d['2018-04-20']['pass'] += 1
d['2018-05-20']['pass'] += 1
d['2018-04-20']['fail'] += 1
结果:
defaultdict(collections.Counter,
{'2018-03-20': Counter({'fail': 1, 'pass': 2}),
'2018-04-20': Counter({'fail': 1, 'pass': 1}),
'2018-05-20': Counter({'pass': 1})})