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

使用locals()的Python词典理解给出KeyError

方博
2023-03-14
问题内容
>>> a = 1
>>> print { key: locals()[key] for key in ["a"] }
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <dictcomp>
KeyError: 'a'

如何创建具有这种理解力的字典?


问题答案:

dict理解具有 自己的名称空间
,而locals()在该名称空间中没有a。从技术上讲,除最外层可迭代对象(此处["a"])之外的所有其他内容,几乎都是作为嵌套函数运行的,最外层可迭代对象作为参数传递。

如果您globals()改用了代码,或者在dict理解 之外 创建了对locals()字典的引用,那么您的代码将起作用: __

l = locals()
print { key: l[key] for key in ["a"] }

演示:

>>> a = 1
>>> l = locals()
>>> { key: l[key] for key in ["a"] }
{'a': 1}
>>> { key: globals()[key] for key in ["a"] }
{'a': 1}


 类似资料:
  • 是否有可能在Python中创建字典理解(用于键)? 如果没有列表理解,您可以使用以下内容: 我们可以将其缩短为列表理解:。 但是,假设我想将字典的键设置为相同的值。我可以做到: 我试过这个: 但是,我在的 的

  • 本文向大家介绍Python字典理解,包括了Python字典理解的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习如何在Python中使用字典理解。如果您已经熟悉列表理解,那么学习字典理解就不会花费很多时间。 我们需要键:值对来创建字典。如何使用字典理解来获取这些键值对?请参阅字典理解的一般说明。 我们需要填写以上语句来完成字典理解。有很多方法可以填充它。让我们看看一些最常见的方法。

  • 问题内容: 我需要合并多个词典,例如: 随着A B C和D作为树的叶子像 词典的级别(深度)未知,可能是 在我的情况下,它代表目录/文件结构,其中节点为docs,而节点为文件。 我想将它们合并以获得: 我不确定如何使用Python轻松做到这一点。 问题答案: 这实际上是非常棘手的-特别是如果你希望在事物不一致时收到有用的错误消息,同时正确地接受重复但一致的条目(这里没有其他答案了……)。 假设你没

  • 问题内容: 我在和中找到了以下有关dict理解的堆栈溢出文章:在Python中用列表理解创建字典,说明我可以像这样应用字典理解: 我在Python 3中尝试过。但是,它引发了一个异常。 两种版本都提出了这样的说法。 在Python3中进行字典理解的最简单/最直接的方法是什么? 问题答案: 遍历字典只会产生 键 。使用循环遍历键和值: 您看到的异常 不是 dict理解问题,也不限于Python 3。

  • 问题内容: 我在理解Python3中的嵌套字典理解时遇到了麻烦。从下面的示例中得到的结果输出的是正确的结构,没有错误,但仅包含一个内部键:值对。我还没有找到像这样的嵌套字典理解的例子。谷歌搜索“嵌套词典理解python”显示了遗留示例,非嵌套理解或使用其他方法解决的答案。我可能使用了错误的语法。 例: 此示例应返回原始字典,但内部值由修改。 outside_dict词典的结构以及结果: 问题答案:

  • 基础教程介绍了基本概念,特别是对象和类。 进阶教程对基础教程的进一步拓展,说明Python的细节。希望在进阶教程之后,你对Python有一个更全面的认识。 之前我们说了,列表是Python里的一个类。一个特定的表,比如说nl = [1,3,8],就是这个类的一个对象。我们可以调用这个对象的一些方法,比如 nl.append(15)。 我们要介绍一个新的类,词典 (dictionary)。与列表相似