在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

2024-06-03

我对 Python 的奇怪行为感到困惑locals().
基本上我想从字典中获取一个项目locals()在字典理解中,但它失败了。这是一个非常基本的事情,所以:

>>> foo=123
>>> bar=345
>>> baz=678
>>> {k: locals()[k] for k in ('foo','bar','baz')}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <dictcomp>
KeyError: 'foo'
>>> locals()['foo']
123
>>> locale=locals()
>>> {k: locale[k] for k in ('foo','bar','baz')}
{'foo': 123, 'bar': 345, 'baz': 678}
>>> type(locals())
<class 'dict'>
>>> def fun():
...     return {'foo': 123,'bar':345}
... 
>>> {k: fun()[k] for k in ('foo','bar')}
{'foo': 123, 'bar': 345}

从实用的角度来看,更丑陋{'foo':foo, 'bar': bar}等在字典或字符串中.format()工作正常。
只是我错过了一些东西,所以知道为什么会增加我的编码气(到目前为止,我在编码时不会发光)。


因为 Python 3 中的所有推导式都是使用隐藏函数实现的,所以调用locals不返回您期望它返回的值。

您可以通过打印值来查看这一点:

>>> _ = {k: print(locals()) for k in ('foo','bar','baz')}
{'k': 'foo', '.0': <tuple_iterator object at 0x7fdf840afa90>}
{'k': 'bar', '.0': <tuple_iterator object at 0x7fdf840afa90>}
{'k': 'baz', '.0': <tuple_iterator object at 0x7fdf840afa90>}

分配locals() to locale,就像你一样,负责处理这个问题。你没有打电话locals领悟内。


请注意,在 Python 2 中,情况有点模糊。 dict-comps 确实以类似的方式失败,但早于 dict-comps 的 list-comps 工作得很好:

>>> _ = [locals()[k] for k in ('foo', 'bar', 'baz')]
>>> _
[20, 40, 60]

这是另一个“疣”已解决 https://docs.python.org/3.0/whatsnew/3.0.html#changed-syntax与Py3。

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

在字典理解中为 locals() 添加下标失败并出现 KeyError [重复] 的相关文章

  • 如何在 PyQT5 中从 string/xml 流显示 SVG 图像?

    在 Python3 QT5 应用程序中 我试图显示最初构建为字符串的 SVG 图像 我需要操纵这个 SVG 图像 例如改变它的颜色 所以我让字符串随着时间的推移而改变 这是一个最小的工作示例 import sys from PyQt5 Qt
  • 替换 pytest 中的测试用例继承?

    背景 在 Python 中unittest https docs python org 3 library unittest html在框架中 在一组基本测试上使用继承来将整套测试应用于新问题 并且偶尔添加其他测试是一种相当常见的习惯用法
  • 如何仅选择从空间实体中提取的第一个实体?

    我正在尝试使用以下代码从 DataFrame 中可用的文本中提取实体 for i in df Text to list doc nlp i for entity in doc ents if entity label GPE 我需要存储第一
  • Python中字典转小写

    我希望这样做 但为了一本字典 My string lower 是否有内置函数或者我应该使用循环 您将需要使用循环或列表 生成器理解 如果你想将所有的键和值都小写 你可以这样做 dict k lower v lower for k v in
  • 执行时忽略字符串列

    我使用以下代码来标准化 pandas DataFrame df norm df df mean df max df min 当所有列都是数字时 此方法效果很好 但是 现在我有一些字符串列df并且上述标准化有错误 有没有办法只对数据帧的数字列
  • 调整 MLPRegressor 超参数

    我一直在尝试调整 MLP 模型的超参数来解决回归问题 但总是收到收敛警告 这是我的代码 def mlp model X Y estimator MLPRegressor param grid hidden layer sizes 50 50
  • 可视化链接攻击的最佳方式是什么

    我有一个如下图所示的 Networkx 图 我执行边缘攻击并观察结果子图的节点处的值的变化 例子 如果我攻击边 a 2 边 a 2 和 2 1 将被移除 解释一下 当边 a 2 受到攻击时 节点 2 的度数将 上述攻击会产生一个子图 每一条
  • 如何防止 python 请求对我的 URL 进行百分比编码?

    我正在尝试使用 python 中的 requests get 获取以下格式的 URL usr local bin python import requests print requests versiom url http api exam
  • 姜戈 - 信号。简单的例子开始

    我是 Django 新手 无法理解如何使用 Django 信号 谁能解释一下 Django 信号 用简单的例子 提前致谢 通过做一些很小的研究 你可以在互联网上找到关于 django 信号的非常好的内容 在这里我将向您简要介绍 Django
  • 如何将字典中从一个键到下一个键的所有值相加? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个字典 其中 DateTime Now Date 转换为字符串作为键 整数作为值 我需要以某种方式将从一个输入键到下一个键的所有
  • 在pyspark中将RDD转换为Dataframe

    我正在尝试将 RDD 转换为 pyspark 中的 Dataframe My RDD abc 1 2 0 def 4 6 7 1 我想要 Dataframe 形式的 RDD Index Name Number 0 abc 1 2 1 def
  • 为什么 scipy.signal.correlate2d 在此示例中无法工作?

    我试图对两个图像进行交叉关联 从而通过找到最大相关值来将模板图像定位在第一张图像上 我画了一个带有一些随机形状的图像 第一张图像 并剪出了其中一个形状 模板 现在 当我使用 scipy 的 correlate2d 并在具有最大值的相关性中定
  • matplotlib中有制作散点图矩阵的函数吗?

    散点图矩阵示例 matplotlib pyplot中有这样的函数吗 对于那些不想定义自己的函数的人来说 Python 中有一个很棒的数据分析库 称为Pandas http pandas pydata org 在那里可以找到分散矩阵 http
  • 激活虚拟环境不起作用

    我创建了两个 virtualenv 并安装了两个不同版本的 django 现在我在激活两个环境时遇到问题 我喜欢这样 source Django1 6 bin activate 然后我看到环境被激活了 然后我这样做 pip install
  • Python:UnboundLocalError:赋值前引用的局部变量“count”[重复]

    这个问题在这里已经有答案了 我不明白我的 Python 代码有什么问题 它给了我以下错误 Traceback most recent call last File main py line 77 in
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 持久子进程.Popen 会话

    我正在尝试运行一个命令 然后在同一环境中运行另一个命令 比如说 如果我在第一个命令中设置环境变量 我希望它可用于第二个命令 我试过这个 import subprocess process subprocess Popen echo test
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • 为什么我不能将 addstr() 添加到 pythoncurses 窗口中的最后一行/列?

    使用Python 我尝试使用addstr 将光标位置写入curses 窗口的右下角 但出现错误 ScreenH 2工作正常 但打印在窗口底部的第二行 ScreenH 1根本不起作用 我究竟做错了什么 import curses Screen
  • 如何使用判别函数绘制 3 个类别之间的决策边界

    我有 3 个判别函数 将 2D 空间划分为 3 个区域 我想绘制这些区域之间的决策边界 我不知道如何在 python 中使用 matplotlib meshgrid 来做到这一点 对于2个判别函数 过程很简单 我计算值为 0 的函数和等高线

随机推荐

  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu
  • sklearn 中带有词袋和附加情感特征的文本分类器

    我正在尝试构建一个分类器 除了词袋之外 还使用情绪或主题 LDA 结果 等特征 我有一个包含文本和标签的 pandas DataFrame 并且想添加情感值 5 到 5 之间的数字 和 LDA 分析结果 带有句子主题的字符串 我有一个工作词
  • NSCF 数组越界?

    我有一个相当简单的应用程序 使用 Core Data 和几个数组控制器 在 IB 中 除了 xcdatamodel 文件之外 没有它们的代码文件 当我运行应用程序时 我在日志中收到以下错误 应用程序仍然运行 但在转到 文件 gt 新文档 之
  • 有没有更有效的方法通过ffmpeg批量添加水印和加入视频?

    我有这个批处理文件 使用 ffmpeg 在我的视频中添加徽标 然后添加简介 但需要 10 小时到一天的时间 具体取决于我需要添加水印的数量 是否有更有效的方法来实现此目的 视频有时具有不同的分辨率 因此我无法删除到 1280 720 尺寸的
  • XCode8 initWithCoder 框架大小

    发现如果使用XCode 8 XIB文件 UIView initWithCoder将获取frame 0 0 1000 1000 而不是XIB帧大小设置 检查它将添加的 XIB xml 文件的差异
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅
  • 根据产品类别自定义购物车总计和结帐总计文本

    我想根据产品类别 或其他一些逻辑 自定义购物车和结帐订单汇总表中的文本 例如 对于 总计 文本 参见图片 如果购物车包含名为 杂货 的类别中的产品 那么我希望订单摘要中的文本显示为 总计估计 文本 参见图片以下 如果购物车不包含任何杂货 那
  • 运行时错误“13”:IF 与 OR 语句组合的类型不匹配

    在我使用 Excel 的 VBA 代码中 Dim Field2 As String Field2 Cells i 4 Value If Right Field2 3 A 1 Or A 2 Or B 1 Or B 2 Or C 1 Or C
  • 命名空间“Microsoft”中不存在类型或命名空间名称“AspNet”错误?

    I ve downloaded a website and in VS express open it through file gt open website When I press F5 to debug I get build er
  • 以编程方式暂时禁用自动更新

    我有一个自行车计算机应用程序 可以在用户骑行时记录数据 我有一位用户报告了一个我没有考虑到的问题 他出去进行了一次长途骑行 100 多英里 但在外出记录数据时 该应用程序通过 Google Play 自动更新进行了更新 不幸的是 这导致应用
  • 在Framework 4.6项目中使用.net core DLL

    我已经在 net core 2 0 中构建了一个 DLL 现在我想在使用 net 4 6 1 框架的 WinForms 项目中使用它 我可以引用该 dll 但收到 System IO FileLoadException 表示找不到 Syst
  • 从测试台访问子模块中的输入和输出

    我的被 测设备 DUT 有许多子模块 我想测试其中的一些 我的测试夹具将是我的项目的顶层 比 DUT 高一级 并且由于我似乎只能访问下一层模块的输入和输出 所以我只能访问顶层的输入和输出被测设备 我希望能够从测试夹具下方的两层或多层模块访问
  • python 函数返回 javascript date.getTime()

    我正在尝试创建一个简单的 python 函数 它将返回与 javascript 相同的值new Date getTime 方法 如所写here http www w3schools com js js dates asp javascrip
  • 临时表上没有外键限制? SQL Server 2008

    我知道临时表只会在 SQL Server 会话打开时存在 但为什么不能对它们进行外键限制呢 想象一下这样的场景 您创建从临时表到具体表的键的外键关系 外键关系的限制之一是您无法从临时表所依赖的键表中删除行 现在 通常当您创建外键关系时 您知
  • Ant 类路径和 junit.jar

    我有一个 build xml 它允许我运行 junit 测试 这是相关部分
  • TCP 连接寿命

    客户端 服务器 TCP 连接在野外可以持续多长时间 我希望它保持永久连接 但事情发生了 所以客户端将不得不重新连接 我什么时候可以说代码有问题而不是某些外部设备有问题 我同意赞 林克斯的观点 虽然无法保证 但假设不存在连接或带宽问题 您可以
  • $vuetify.goTo 不会在 v-card 组件内滚动

    我有一个带有 v 卡的组件 我在卡片标题区域放置了一个简单的按钮 当我单击时 我看到该方法被触发 它显示在控制台中 但是 卡片永远不会滚动 如果我输错了类名 则会收到错误 因此 goTo 似乎会执行某些操作 因为它找不到该类 没有拼写错误
  • 是什么阻止密码被注入的 Symfony 服务 (FOSUserBundle) 重新哈希

    这是我的后续问题原问题 https stackoverflow com questions 36681622 how to access the user token in an injected service to reencode p
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar