Python 给出 Python 中变量名的列表,如何创建一个具有变量名称作为键的字典 (到变量的值)

醋精测试媛 · 2020年12月23日 · 最后由 醋精测试媛 回复于 2020年12月23日 · 3126 次阅读
name = 'foo'
zip1 = 123

message = dict([(x, locals()[x]) for x in ['name', 'zip1']])
print(message)

console:

Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/YangoManagementPlatformWebTest/common/mysql.py", line 103, in <module>
    message = dict([(x, locals()[x]) for x in ['name', 'zip1']])
  File "C:/Users/Administrator/PycharmProjects/YangoManagementPlatformWebTest/common/mysql.py", line 103, in <listcomp>
    message = dict([(x, locals()[x]) for x in ['name', 'zip1']])
KeyError: 'name'

请问问题出在哪里呢?

共收到 3 条回复 时间 点赞
1楼 已删除
name = 'foo'
zip1 = 123

temp_dic = locals()
message = dict([(x, temp_dic[x]) for x in ['name', 'zip1']])
print(message)

locals() 是获取局部变量 ,而列表生成式迭代时候类似创建了个函数,那么你在这个函数空间内,locals() 就取不到 name 和 zip
例如:

def my_range():
    print(locals())
my_range()
>> {}

1.在列表生成式外面用变量赋值
2.使用 globals()

谢谢,理解了。 @YueChen @TW95

醋精测试媛 关闭了讨论 12月24日 10:27
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册