如何通过将值与公共键相加来从字典列表创建单个Python字典?

2023-11-26

我有一个字典列表,例如:

dictList = [
    {'a':3, 'b':9, 'c':4},
    {'a':9, 'b':24, 'c':99},
    {'a':10, 'b':23, 'c':88}
]

所有字典都有相同的键,例如a, b, c。我希望创建一个具有相同键的字典,其中的值是原始列表中所有字典中具有相同键的值的总和。

因此对于上面的例子,输出应该是:

{'a':22, 'b':56, 'c':191}

做到这一点最有效的方法是什么?我目前有:

result = {}
for myDict in dictList:
    for k in myDict:
        result[k] = result.setdefault(k, 0) + myDict[k]

如果所有字典都有所有键,您可以这样做:

>>> dict((key, sum(d[key] for d in dictList)) for key in dictList[0])
{'a': 22, 'b': 56, 'c': 191}

[Edit]如果速度是重中之重,您还可以使用以下命令来减少约 20%(尽管会牺牲一些可读性):

import operator, itertools
dict((key, sum(itertools.imap(operator.itemgetter(key), dictList))) 
      for key in dictList[0])

速度取决于字典的大小。对于原始 3 项列表和各种不同大小(通过将原始列表乘以 10、100 或 1000 等创建),我得到以下计时:

List Size   Original      dict+generator       imap+itemgetter
      3      0.054          0.090                0.097
     30      0.473          0.255                0.236
    300      4.668          1.884                1.529
   3000     46.668         17.975               14.499

(10,000 次运行的所有时间)

因此,对于 3 个列表来说,速度会稍微慢一些,但对于较大的列表来说,速度会快两到三倍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过将值与公共键相加来从字典列表创建单个Python字典? 的相关文章

随机推荐

  • TypeScript:获取超类的类型?

    我想知道是否有办法在打字稿中获取扩展类的类型 class BaseClass baseProp string class SubClass extends BaseClass subProp string type someType
  • 如何添加系统“Windows 挂钩”以便在创建/激活窗口时收到通知?

    尝试了很多方法 但在我的任务栏被破坏以及桌面用户界面上出现其他超自然效果的情况下 我无法让它始终如一地工作 尝试使用开放库http mwinapi sourceforge net 第一的 尽管它作为面向对象层来枚举窗口和其他东西效果很好 它
  • 将 Javascript 添加到 WKWebView

    你好 我知道这似乎是一个超级简单的问题 但我想将此 JS 添加到我的 WebView 中 现在显然我知道这是 HTML 但我不确定要在 evaluateJavaScript 中放入什么才能使用 JS 源 抱歉 如果这不是很清楚 我对 Swi
  • 从 C 函数构建 PyObject*?

    我正在将 Python 嵌入到我正在制作的 C 库中 我希望用户能够以函数指针的形式传递 C 函数PyObject fpFunc PyObject PyObject 这样我就可以在嵌入式Python中使用这些函数 所以我有一个函数指针 并且
  • 如何使用 python 和 Matplotlib 更新绘图

    我一直在努力尝试使用 matplotlib 和 python 和 wxpython 来更新图表 我想按下一个按钮并将数据添加到嵌套在 wx notebook 中的图表中 下面是代码 谢谢您的帮助 import wx import matpl
  • 在 Java 中取消转义 JavaScript 转义值

    在我们的 Web 服务中 我们通过 JavaScript 设置了一个 cookie 我们在 Java Servlet 中再次读取该 cookie 然而 我们需要转义 cookie 的值 因为它可能包含非法字符 例如 这会弄乱 cookie
  • 我什么时候应该在 data.table 中使用 := 运算符?

    data table对象现在有一个 运算符 该运算符与所有其他赋值运算符有何不同 另外 它有什么用途 速度有多快 什么时候应该避免使用 这是一个示例 显示 10 分钟缩短为 1 秒 摘自 NEWShomepage 这就像子分配给data f
  • 在另一个字段发生变化时触发 Yii 字段验证

    我的 Yii 模型中有两个相关字段 它们是 items per 和 items period 每个项目是一个整数 反映在给定时间段内要处理的项目数 items period是该时间段内的秒数 带有标记为秒 分钟 小时的选项的下拉列表 将 i
  • PHP LaTeX 到 PDF 的转换/编译 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我进行了广泛的搜索 寻找一个基于 PHP 的工具来将 LaTeX 转换为 PDF 但没有成功 我知道 LaTeX 在服务器端运行 但是我仍然需要基于
  • Tensorflow:如何在新图中使用预训练权重?

    我正在尝试使用 CNN 和 python 框架使用张量流构建一个对象检测器 我想首先训练我的模型仅进行对象识别 分类 然后使用预训练模型的几个卷积层训练它来预测边界框 我需要替换全连接层 可能还需要替换一些最后的卷积层 所以 出于这个原因
  • Windows 上出现“OverflowError:Python int 太大,无法转换为 C long”,但 Mac 上则不然

    我在 Windows 和 Mac 上运行完全相同的代码 使用 python 3 5 64 位 在 Windows 上 它看起来像这样 gt gt gt import numpy as np gt gt gt preds np zeros 1
  • C++ #ifndef 用于包含文件,为什么头文件全部大写?

    我想知道为什么后面的名字 ifndef指令始终全部大写并且似乎与实际头文件的名称不匹配 与此相关的规则是什么 我一直在网上查找 但没有找到任何解释 如果我的头文件名为 myheader h 就可以使用 ifndef MYHEADER 如果是
  • 显示/隐藏 div 并带有向左\向右滑动动画

    我在这里尝试过 http jsfiddle net 92HXT 1 但它不起作用 仅当我使用时才有效show slow hide slow Thanks 虽然不是最清晰的动画 但我通过找到父级并隐藏所有兄弟姐妹 使其能够按照我认为您想要的方
  • 如何判断对象是否在 NSArray 中?

    有没有办法判断某个对象是否在 NSArray 中 我向数组添加对象的方式使得可以多次添加同一个对象 我想看看是否有办法查看它是否已经存在于该数组中 任何位置 NSArraycontainsObject 方法正是为了这个目的 它的完整签名是
  • 如何自定义UIActivityViewController共享菜单的示例?

    有没有例子说明如何定制UIActivityViewController用我自己的图标分享菜单IBAction 我见过这个 id initWithActivityItems NSArray activityItems applicationA
  • Spark Streaming:StreamingContext不读取数据文件

    我是 Spark Streaming 的新手 我正在尝试使用 Spark shell 开始使用它 假设我在spark 1 2 0 bin hadoop2 4的根目录下放置了一个名为 dataTest 的目录 我想在 shell 中测试的简单
  • Service Worker 中的 XMLHttpRequest

    我正在尝试在 chrome 上创建一个推送通知系统 我有一个从 mysql 获取数据并回显 JSON 的 php 现在我想调用一个函数 getJsonCode 当推送通知到达时它会被激活并读取 JSON 数据 在我的 Service Wor
  • 如何手动将 Angular 表单字段设置为无效?

    我正在处理登录表单 如果用户输入无效凭据 我们希望将电子邮件和密码字段标记为无效 并显示一条消息 提示登录失败 如何从可观察的回调中将这些字段设置为无效 模板
  • Hibernate 忽略 fetchgraph

    这是我的实体 public class PersonItem implements Serializable Id Column name col1 private String guid Column name col2 private
  • 如何通过将值与公共键相加来从字典列表创建单个Python字典?

    我有一个字典列表 例如 dictList a 3 b 9 c 4 a 9 b 24 c 99 a 10 b 23 c 88 所有字典都有相同的键 例如a b c 我希望创建一个具有相同键的字典 其中的值是原始列表中所有字典中具有相同键的值的