将嵌套字典的值分配给以键命名的变量

2024-10-01 02:29:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将嵌套字典的值分配给以其键命名的变量。我在Stackoverflow上找到了这段代码,但它只打印密钥和值对:

def myprint(d):
for k, v in d.items():
    if isinstance(v, dict):
        myprint(v)
    else:
        print("{0} : {1}".format(k, v))

例如,如果我的字典中有以下内容:{thisIsADummy : 37}

我可以以某种方式创建一个名为thisIsADummy的变量,该变量以键命名,值为37 所以我的输入应该是print(thisIsADummy),输出应该是37

请让我知道,如果有人有任何想法,如何尽可能有效地做到这一点,因为这本字典可能有一千多对。多谢各位

编辑: 使用exec效果很好,但我在最初的帖子中过于简化了。我需要变量是一个字典,这样当我打开多个文件时,我可以附加值


Tags: 代码inforif字典def密钥items
2条回答

基本思想是使用“exec”函数,如下所示

nat = {
    'abc': 1,
    'a123': 2,
    'a1b': 3,
    'b31': 4
}

for k, v in nat.items():
    exec("%s = %d" % (k, v))
    print(k, v)

print(abc, a123, a1b, b31)

注意:仅当键遵循变量名约束时,它才起作用

避免使用eval(),试试setattr(我不确定这是否是更好的方法):

import sys

d = {"thisIsADummy": 37, 'a': [123,2]}
for k, v in d.items():
    setattr(sys.modules[__name__], k, v)

a.append(1)
print(thisIsADummy, a)

结果:

37 [123, 2, 1]

相关问题 更多 >