当前位置: 首页 > 面试题库 >

字典值总和列表

濮阳耀
2023-03-14
问题内容

我有这种形式的字典清单:

[
{'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8},

{'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8},

{'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8},
]

我想像这样通过列表中的每个元素通过键求和:

    {
     'signal_8': 3,
     'signal_1': 21,
     'signal_10': 15,
     'signal_5': 6,
     'signal_2': 15,
     'signal_6': 9,
     'signal_4': 27,
     'signal_3': 18,
     'signal_9': 12,
     'signal_7': 24
    }

我尝试过的是以下内容:

    result = {}
    sm = 0
    for elm in original_list:
        for k,v in elm.items():
            sm += v
            result[k] = sm
    print(result)

但它仍然不起作用。


问题答案:

您想要的是Counter集合类型。集合上的Python文档最能描述它,但是从本质上讲aCounter是一种特殊的字典,其中所有值都是整数。您可以传递任何密钥(包括不存在的密钥)并将其添加。例如:

from collections import Counter

original_list = [
    {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, 
    {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8},
    {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8},
]

result = Counter()

for elem in original_list:
    for key, value in elem.items():
        result[key] += value

print(result)

编辑:@timgeb提供了此答案的一种变体,该变体update()Counter对象上本地使用了该方法。我建议将其作为此处的最佳答案



 类似资料:
  • 问题内容: 我有以下词典列表: 我想对每个求和并在字典列表中得到以下结果: 问题答案: from collections import defaultdict 它产生: 要将其转换为词典列表: 结果:

  • 问题内容: 我试图以一种优雅的方式编写一个函数,该函数将字典列表进行分组并汇总(加和)like键的值。 例: 我尝试使用itertools为groupby进行此操作,并对每个相似键值对进行求和,但是这里缺少一些内容。这是我的函数当前的样子: 问题答案: 您可以使用和。 使用dict可以在中完成,而排序则需要时间。 的优点是它将自动将相似键的值相加。 例:

  • 问题内容: 区别在于,我的值是列表,而不仅仅是单个值。 因此,我想转: 变成: 假设我很高兴自己的价值观是独一无二的。 问题答案: 您可以使用字典理解和方法。

  • 问题内容: 因此,我将此索引作为字典。 我需要反转索引,因此它将是一个字典,其中值的重复项合并为一个键,并以2个原始键作为值,如下所示: 是的,我手动输入了以上内容。 我的教科书具有反转字典的功能: 它适用于简单的key:value对 但是,当我尝试使用具有诸如值之类的列表的dict的函数时,出现以下错误消息: 我已经花了一个小时寻找解决方案,这本书无济于事,我怀疑我可以以某种方式使用元组,但是我

  • 键值列表 图 字典 到目前还没有讲到任何关联性数据结构,即那种可以将一个或几个值关联到一个key上。 不同语言有不同的叫法,如字典,哈希,关联数组,图,等等。 Elixir中有两种主要的关联性结构:键值列表(keyword list)和图(map)。 7.1-键值列表 在很多函数式语言中,常用二元元组的列表来表示关联性数据结构。在Elixir中也是这样。 当我们有了一个元组(不一定仅有两个元素的元

  • 我想更改字典的纬度和经度值。 它正在抛出以下错误消息: 对于此它在targetWaypoints内打印一个完整的字典。我想打印纬度值。 提前谢谢。