添加计数器保持零值

考夫:

我尝试使用以下代码求和其他字典中存在的键的值:

import functools
import operator
import collections

my_dict = [{'a':0, 'b':1, 'c':5}, {'b':3, 'c':2}, {'b':1, 'c':1}]
sum_key_value = functools.reduce(operator.add, map(collections.Counter, my_dict))

print(sum_key_value)

# Output
# Counter({'c': 8, 'b': 5})

我的问题是,是否希望输出保留所有字典键,即使该键未像a我的情况一样出现在所有字典中,那么最好的方法是不使用循环呢?

阿育:

嗯,有很多不错的方法可以使用for循环来实现,但是由于您特别想避免for循环,因此这是一种方法:

sum_key_value = dict(functools.reduce(lambda a, b: a.update(b) or a,
                     my_dict, collections.Counter()))

因此,这里发生的是您创建一个计数器,并使用它来累加值。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章