使用locals()的Python词典理解给出KeyError
发布于 2021-01-29 18:33:01
>>> 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'
如何创建具有这种理解力的字典?
关注者
0
被浏览
51
1 个回答
-
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}