Python 如何计算嵌套字典中的项目
我想收集每个日期的结果 对于每个日期增量,通过失败结果,如果不存在,则在dict中添加日期。 我应该在dict中使用dict还是默认dict e、 g.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
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)
。