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

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 指出的那样,最简单的方法是使用 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})})