使用 python 字典理解进行重构

2023-12-23

我有 2 个字典,其中包含相同的键,但值对不同。让我们让 dictA 和 dictB 代表相关的两个字典。

dictA = {'key1':'Joe', 'key2':'Bob'}
dictB = {'key1':'Smith', 'key2':'Johnson'}

目前,我正在通过嵌套 if 语句创建基于常见键的新字典。这样做时,共享键的值包含在新字典的列表中。请参阅下面完成的操作:

dictAB = {}  # Create a new dictionary

# Create a list container for dictionary values
for key in dictA.keys():
    dictAB[key] = []

# Iterate through keys in both dictionaries
# Find matching keys and append the respective values to the list container
for key, value in dictA.iteritems():
    for key2, value2 in dictB.iteritems():
        if key == key2:
            dictAB[key].append(value)
            dictAB[key].append(value2)
        else:
            pass

如何使用 python 字典理解将其变成更干净的结构?


使用套装或关键视图(python 2.7) http://docs.python.org/library/stdtypes.html#dict.viewkeys:

dictAB = {k: [dictA[k], dictB[k]] for k in dictA.viewkeys() & dictB.viewkeys()}

2.7之前:

dictAB = dict((k, [dictA[k], dictB[k]]) for k in set(dictA) & set(dictB))

在Python 3中,你可以使用.keys直接执行此类操作的方法,因为它们是作为视图实现的:

dictAB = {k: [dictA[k], dictB[k]] for k in dictA.keys() & dictB.keys()}

演示(Python 2.7):

>>> dictA = {'key1':'Joe', 'key2':'Bob'}
>>> dictB = {'key1':'Smith', 'key2':'Johnson'}
>>> dictAB = {k: [dictA[k], dictB[k]] for k in dictA.viewkeys() & dictB.viewkeys()}
>>> print dictAB
{'key2': ['Bob', 'Johnson'], 'key1': ['Joe', 'Smith']}

The &两个集合或字典视图上的运算符创建两个集合的交集;两组中都存在的所有键。

通过使用键的交集,即使 dictA 或 dictB 具有未出现在另一个字典中的键,此代码也将起作用。如果您绝对确定键将始终匹配,则可以直接迭代任一字典而无需交集:

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

使用 python 字典理解进行重构 的相关文章

  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的

随机推荐

  • 为什么 @FunctionalInterface 没有在 JDK 中符合条件的所有接口上使用?

    Java 8 为我们提供了许多有趣的方法来使用函数式接口以及新的注释 功能接口 http docs oracle com javase 8 docs api java lang FunctionalInterface html 它的工作是告
  • 使用 Postgres 将邻接列表转为 JSON 图

    我有以下标签表架构 CREATE TABLE tags id integer NOT NULL name character varying 255 NOT NULL parent id integer 我需要构建一个查询来返回以下结构 为
  • 获取 CFNetwork SSLHandshake 失败 (-9806) 错误

    我正在尝试使用调用我的网址 NSDictionary landingDetails appDelegate landingPage NSString devinf UIDevice currentDevice systemVersion N
  • Cassandra CQL3 导入 CSV

    背景 我创建了一个名为AvailableDomains 的架构 简单策略 1 个节点 在该键空间中 我创建了 1 个表 列族 称为包含列 id urn 时间戳 标志 的域 除时间戳之外的所有类型文本都是时间戳类型 我启动cassandra
  • 视频元素上出现不需要的边框[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何用webpack+react渲染图像?

    我对 React 和 Webpack 还很陌生 我遇到了这个我不明白的奇怪问题 问题 当我检查图像时 上面是我看到的 显然没有显示我的图像 我正在使用文件加载器 我的结构 网页包 const path require path const
  • R 中 KerasR LSTM 的数组转换

    为了在 KerasR 中使用 LSTM 我必须转换我的 NumericMatrix 335 x 1515 我想我在这里找到了解决方案https stats stackexchange com questions 274478 underst
  • rgl.snapshot() 不再有效

    我刚刚将 R 和 rgl 升级到以下版本 现在 rgl snapshot 不再起作用 它在以前的版本中有效 有没有解决的办法 R版本2 12 1 2010 12 16 rgl 版本 0 92 798 gt library rgl gt x
  • 从Dictionary中高效获取IReadOnlyDictionary

    public class Flea Animals var fleas new Dictionary
  • 是否可以使用 Nokogiri 解析样式表?

    我花了两个小时在谷歌上搜索这个问题 但找不到任何好的答案 所以让我们看看人类是否可以击败谷歌计算机 我想用 Ruby 解析样式表 以便可以将这些样式应用到文档中的元素 使样式内联 所以 我想采取类似的东西 并能够将其提取到某种 Nokogi
  • json.net - 如何仅在根对象上添加属性 $type

    我想修改我的 json NET 序列化器 以仅将 type 属性添加到实现给定接口的对象 而不添加到任何属性或嵌套对象 使用 TypeNameHandling Auto 默认 PropertyA 123 PropertyB foo Prop
  • Netty closeFuture().sync().channel();块休息 API

    我正在学习 Netty 并开始使用 Spring Boot 一些教程 我的目标是创建一个应用程序 该应用程序设置一个 TCP 端口来接收消息并通过 REST API 呈现它们 大多数教程都说我应该添加这样的东西 serverChannel
  • 如何将 VoiceOver 辅助功能添加到应用程序的图标徽章编号?

    问题 如何添加自定义 VoiceOver 辅助功能Label or Hint到应用程序 图标徽章编号 例如 当iOS设置Accessibility gt VoiceOver被转动On VoiceOver 会大声朗读屏幕上触摸的项 目 对于
  • PE文件如何映射到内存中?

    这几天我一直在研究PE格式 还有几个问题 数据部分是否被映射到进程的内存中 或者程序是否从磁盘中读取它 如果它确实被映射到内存中 那么进程如何获取该部分的偏移量 以及其他部分 有没有什么方法可以获取已映射到内存中的进程的入口点 而不触及磁盘
  • Excel 的 VBA 代码。如何在单独的工作表中创建图表?

    我有一个关于如何使用 vba 代码自动创建绘图 图表 的问题 我可以有一个包含两种列的 Excel 文档 可分为 6 列或可分为 7 列 前两张图片代表我如何接收 Excel 文档 我要做的是 Step 1 复制 A 列并将其放在每组 6
  • 为什么 Dragstart 中的 event.preventDefault() 会中断进一步的拖动事件的执行?

    我正在尝试拖动图像 并且为了停止浏览器的默认图像拖动 我正在使用 event preventDefault 但由于某种原因 它会中断其他事件的执行 例如dragenter dragover dragend等 为什么会这样以及如何在不中断正常
  • 小于与。等于 C/C++ 效率

    当我使用旧的 API 时 例如 Unix 上的 C 套接字 API 我总是注意到人们喜欢小于 lt 大于等于 在比较它们的错误返回值时 int result send if result lt 0 perror 在我提到的情况下 返回码只能
  • Web api 控制器方法在序列化 Stream 对象时出现异常

    我有一个 web api 控制器方法如下 HttpPost public string PostMethod int id Stream downloadStream Service downloadStream id JavaScript
  • 如何在 asp.net web api 中启用 cors 选项?

    如何启用 CORS 选项asp net网络API 我安装了这个包Microsoft AspNet WebApi Cors来自 nuget 的 CORS 支持 但是 我收到一条错误消息 指出IAppBuilder不包含定义app useCor
  • 使用 python 字典理解进行重构

    我有 2 个字典 其中包含相同的键 但值对不同 让我们让 dictA 和 dictB 代表相关的两个字典 dictA key1 Joe key2 Bob dictB key1 Smith key2 Johnson 目前 我正在通过嵌套 if