如何通过将值与公共键相加来从字典列表创建单个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字典? 的相关文章

  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li

随机推荐

  • 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 我希望创建一个具有相同键的字典 其中的值是原始列表中所有字典中具有相同键的值的