如何将项目列表转换为python中的变量?

Posted

技术标签:

【中文标题】如何将项目列表转换为python中的变量?【英文标题】:How to convert a list of items into variables in python? 【发布时间】:2012-07-21 22:46:06 【问题描述】:

我在 python 中有一个项目列表,如下所示: 输入:

a=['nt','mt','pt']

我想将上面列表中的每一项都作为一个变量,然后将该变量分配给涉及该变量的正则表达式。

输出: 我想要这样的东西:

nt=re.compile("%s=[a-z]+&" %nt)
mt=re.compile("%s=[a-z]+&" %mt)
pt=re.compile("%s=[a-z]+&" %pt)

我该怎么做呢??? 谢谢。 [抱歉没有以最好的方式提出问题]

【问题讨论】:

【参考方案1】:

Keep data out of your variable names.不要使用变量,使用字典:

d = name: re.compile("%s=[a-z]+&" % name) for name in a

【讨论】:

如果使用 Python 2.6 或更早版本:d = dict((name, re.compile("%s=[a-z]+&" % name) for name in a) 如果我以后想在字符串上使用上面分配的正则表达式怎么办? @abhinav:只需从字典中检索它:d["nt"]【参考方案2】:

毫无疑问最好使用字典键,而不是变量。但仅供参考,Python 变量实际上存储在字典中,您可以通过调用 vars()locals() 来访问它。这意味着可以通过分配给这个字典来动态创建变量,例如:

>>> new_var_name = 'my_var'
>>> vars()[new_var_name] = "I'm your new variable!"
>>> print my_var
"I'm your new variable!"

老实说,我不知道篡改 vars() 的行为是否合理。但这至少很有趣。无论如何,请使用 Sven Marnach 的答案。

【讨论】:

不允许更改vars()locals() 返回的字典。您只能更改globals() 返回的字典。您的代码之所以有效,是因为您在全局范围内执行了它,它在函数内部不起作用。 是的。这显然不是一个站得住脚的解决方案,只是一个有趣的怪癖。

以上是关于如何将项目列表转换为python中的变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 csv 文件转换为 python 中的列表列表

python中,如何将字符串中的多个不等量空格改为改为逗号分隔?

python - 如何将字典转换为python中的列表[重复]

如何将字节对象转换为 python 3 中的元组列表?

如何将逗号分隔的字符串转换为 Python 中的列表?

如何将熊猫系列的列值转换为Python中的列表?