Python - 通过从另一个字典添加Counter()

时间:2016-02-14 00:44:12

标签: python dictionary counter

origincount = {
        'Bug': 0,
        'Important': 0,
        'User Story': 0,
        'Critical': 0,
        'Moderate': 0,
        'Low': 0,
        'story': 0
    }
    if epic['archived'] is False:
        for story in stories:
            if story['epic'] is not None and story['epic']['id'] == epic['id']:
                counts = Counter(label['name'] for label in story['labels'])
                origincount.update(counts)

当需要一起增加值时,我无法理解字典更新,而不仅仅是更新"。

从上面的示例中,当origincount.update(计数)发生时,它只是将值更改为计数中的值。在下一个看起来它做同样的事情。

问题是我需要通过计数来增加值,而不仅仅是替换它。

我尝试循环计数并执行if而不是0,然后添加执行origincount [' Bug'] =计算[' Bug'] + origincount [&#39 ;错误&#39]。但由于我自己的错误或者根本没有错误,这似乎失败了。

更新

for epic in epics:
    origin = Counter({
        'Bug': 0,
        'Important': 0,
        'User Story': 0,
        'Critical': 0,
        'Moderate': 0,
        'Low': 0,
        'story': 0
    })

    if epic['archived'] is False:
        for story in stories:
            if story['epic'] is not None and story['epic']['id'] == epic['id']:
                # story_total += 1
                counts = Counter(label['name'] for label in story['labels'])
                print(counts)
                origin = origin + counts

print(origin)

输出:

Counter({'Bug': 1, 'Important': 1})
Counter({'Critical': 1, 'Bug': 1})
Counter({'User Story': 1})
Counter({'Bug': 1})
Counter({'Bug': 1, 'Important': 1})
Counter({'Bug': 1, 'Important': 1})
Counter({'Critical': 1, 'Bug': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'Critical': 1, 'Bug': 1})
Counter({'Critical': 1, 'Bug': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'User Story': 1})
Counter({'Critical': 1, 'Bug': 1})
Counter({'Critical': 0, 'User Story': 0, 'Important': 0, 'story': 0, 'Low': 0, 'Bug': 0, 'Moderate': 0})

即使对原始字典进行计数器转换,它仍然无法将它们加起来。

2 个答案:

答案 0 :(得分:0)

我认为这会有效,迭代原始帐户,每次检查是否在你的othercount中,如果是,则更新origincount值。

for key, value in origincount.items():
    if key in othercount.keys():
        origincount[key] = value + othercount[key]

答案 1 :(得分:0)

在循环的每次迭代中,您都会声明并初始化一个新的Counter对象。

我愿意打赌它会循环结束,然后在最后一次迭代中将origincounts归零。