如何将项目列表转换为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中的变量?的主要内容,如果未能解决你的问题,请参考以下文章
python中,如何将字符串中的多个不等量空格改为改为逗号分隔?