创建带有运行总计的嵌套词典

巴基尔

我正在尝试创建一个嵌套的字典,该字典保留来自元组的总数。外键将是产品ID。嵌套字典将以月份和该月份发生的崩溃总数作为键。

示例:元组中的值是:(产品ID,日期,崩溃次数)

outages = [
    ('A','2018-01-01', 20),
    ('A','2018-01-01', 20),
    ('A','2018-01-01', 20),
    ('B','2018-01-15', 80),
    ('B','2018-01-19', 200),
    ('A','2018-02-08', 15),
    ('A','2018-02-09', 15),
    ('B','2018-02-15', 80),
    ('B','2018-02-15', 90),
    ('B','2018-02-20', 10),
    ('C','2018-02-25', 120),
    ('A','2018-03-01', 10),
    ('B','2018-04-01', 10),
    ('C','2018-03-01', 5)]

我的预期输出是:

{'A': {1: 60, 2: 30, 3: 10}, 'B': {1: 280, 2: 180, 4: 10}, 'C': {2: 120, 3: 5}}

这是我到目前为止的内容:

from datetime import datetime

#Create a class to implement missing method for when key is not in the dictionary 
class NestedDict(dict):
    def __missing__(self, key):
        self[key] = NestedDict()
        return self[key]

#Create Instance of NestedDict
nested_dic=NestedDict()

#Loop through outages and created outer and inner key
for x in outages:
    nested_dic[x[0]][datetime.strptime(x[1], '%Y-%m-%d').month] = 0 #=>Need Help Here

我不确定从哪里可以得到所需的输出。我将值设置为0,因为执行:+= x[2]而是给了我一个错误。理想情况下,我想outages在扫描每个元组之后迭代并更新字典,而不必重复多次。

戈戈伦

如果您不介意使用,可能会非常简洁collections.defaultdict这个想法是提取月份,将其转换为int并在每个嵌套字典上累积:

from collections import defaultdict

outages_by_month = defaultdict(lambda: defaultdict(int))

for prod_id, date, crashes in outages:
    outages_by_month[prod_id][int(date[5:7])] += crashes

print(outages_by_month) 

如果您需要normal dicts(NestedDict感觉像是不必要的抽象),请从头开始以这种方式构建它们(手动设置默认键),或使用类似方法:

outages_by_month = {k: dict(v) for k, v in outages_by_month.items()}

结果:

{'A': {1: 60, 2: 30, 3: 10}, 'B': {1: 280, 2: 180, 4: 10}, 'C': {2: 120, 3: 5}}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从词典列表创建嵌套的词典

来自分类Dev

带有嵌套词典列表的字典中的Pandas DataFrame

来自分类Dev

创建运行总计

来自分类Dev

带有借方贷方余额的SQL Server运行总计

来自分类Dev

带有两个运行总计的python字典

来自分类Dev

创建带有最少json的嵌套JSON?

来自分类Dev

创建带有嵌套表单导轨的对象

来自分类Dev

有没有办法在 DAX 中按类别创建和显示运行总计?

来自分类Dev

如何使用刀片创建运行总计

来自分类Dev

在矩阵中创建运行总计列?

来自分类Dev

带有嵌套生成内容的运行标头

来自分类Dev

使用嵌套循环在Java中创建带有星号的框

来自分类Dev

在数组中创建带有循环的嵌套对象

来自分类Dev

我需要创建带有嵌套div的div

来自分类Dev

带有嵌套数据的剃刀表创建

来自分类Dev

在数组中创建带有循环的嵌套对象

来自分类Dev

带有嵌套数据的剃刀表创建

来自分类Dev

使用带有嵌套for循环的理解来创建字典

来自分类Dev

在 Angulardart 中创建带有嵌套列表的表

来自分类Dev

带有创建视图的 ASP.NET MVC 嵌套集合

来自分类Dev

带有键列表的快速词典填充

来自分类Dev

SQLite有效运行总计

来自分类Dev

有范围和条件的运行总计

来自分类Dev

动态创建的带有 ID 的按钮不运行功能

来自分类Dev

如何使用用户输入创建嵌套词典

来自分类Dev

如何在Python中创建动态嵌套词典

来自分类Dev

为硬币计数器创建运行总计

来自分类Dev

如何使用Scanner对象的输入创建运行总计

来自分类Dev

Excel - 如何从文本类别创建运行数字总计