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

Python 如何计算嵌套字典中的项目,python,python-3.x,dictionary,counter,defaultdict,Python,Python 3.x,Dictionary,Counter,Defaultdict,我想收集每个日期的结果 对于每个日期增量,通过失败结果,如果不存在,则在dict中添加日期。 我应该在dict中使用dict还是默认dict e、 g.dates={'2018-03-20':[{'pass':2},{'fail':3}} 如果不是在日期中,我想添加新的日期,并更新特定日期的“通过”/“失败”值。正如@Jean Françoisfare指出的,最简单的方法是使用计数器的defaultdict 集合包含有关这些工具的详细信息 from collections import defa

我想收集每个日期的结果

对于每个日期增量,通过失败结果,如果不存在,则在dict中添加日期。 我应该在dict中使用dict还是默认dict

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


如果不是在日期中,我想添加新的日期,并更新特定日期的“通过”/“失败”值。

正如@Jean Françoisfare指出的,最简单的方法是使用
计数器的
defaultdict

集合
包含有关这些工具的详细信息

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

使用
collections.defaultdict(lambda:[{'pass':0},{'fail':0}])
?,然后执行
c[“12-01-2012”][0][“pass”]+=1
创建/附加到现有日期。但是你选择的结构很奇怪。为什么列表中的dicts只包含一个键?(通过还是失败)?可能比多余的列表要好:
{'pass':2,'fail':3}
耶:
collections.defaultdict(lambda:{'pass':0},{'fail':0})
然后
日期['2018-04-20']['pass']+=1
更简单:
collections.defaultdict(collections.Counter)