如何计算嵌套字典中的项目

时间:2018-03-20 20:37:09

标签: python python-3.x dictionary counter defaultdict

我想收集每个日期的结果。

对于每个日期增量传递失败结果并在dict中添加日期(如果不存在)。 我应该在dict或defaultdict中使用dict吗?

e.g。 dates= {'2018-03-20': [{'pass': 2}, {'fail': 3}]}

如果不是日期和更新,我想添加新日期'传递' /'失败'具体日期的价值。

1 个答案:

答案 0 :(得分:3)

最简单的,正如@ Jean-FrançoisFabre指出的那样,是使用defaultdictCounter个对象。

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})})