我想收集每个日期的结果。
对于每个日期增量传递失败结果并在dict中添加日期(如果不存在)。 我应该在dict或defaultdict中使用dict吗?
e.g。 dates= {'2018-03-20': [{'pass': 2}, {'fail': 3}]}
如果不是日期和更新,我想添加新日期'传递' /'失败'具体日期的价值。
答案 0 :(得分:3)
最简单的,正如@ 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})})