迭代字典并自动将对存储为变量
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(第九十一二章)本地变量#属性优先级#注释和块#内联