迭代字典并自动将对存储为变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代字典并自动将对存储为变量相关的知识,希望对你有一定的参考价值。

我有使用泡菜库/模块从泡菜文件中打开的字典:

>>> db
{1: 1, 'var1': 1, 'var2': 2, 'var3': 3, 'vara': 'a', 'varb': 'b', 'varc': 'c'}

我想编写一个for循环,该循环将自动从该字典中将每个键值对作为变量拉出。因此,例如:

>>> for k,v in db.items():
...  k = v

我希望现在将我所有的键作为变量,并且每个变量都有对应的值,例如var1 = 1,var2 = 2,依此类推,但这不起作用:

>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'db', 'f', 'k', 'keys', 'pickle', 'v']

当然,我可以在迭代中手动编写代码,但这仅在我事先知道变量名称的情况下才可行(并且它根本无法扩展)...

>>> for k,v in db.items():
...  var1 = db.get('var1')
...  var2 = db.get('var2')
etc

我以为也许我将k强制为字符串,然后python将它们存储为变量,但这会导致错误:

>>> for k,v in db.items():
...  str(k) = db.get(k)
...
  File "<stdin>", line 2
SyntaxError: can't assign to function call
答案

您可以使用locals().update(db)

但是正如评论中已经说过的,首先这样做可能不是一个好主意。

以上是关于迭代字典并自动将对存储为变量的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf(第九十一二章)本地变量#属性优先级#注释和块#内联

Asp.net - 用于存储字典的缓存与静态变量

无法将字典中的值存储在变量中

局部变量的存储类别--自动变量与静态局部变量

使用 BeautifulSoup 迭代 XML 以提取特定标签并存储在变量中

在字典中存储函数 [Python]