如何在Python中将项目列表转换为变量?

3

我有一个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)

我该如何开始做这个?谢谢。 [对不起,我的问题没有最好的表述方式]
2个回答

15

1
如果使用Python 2.6或更早版本:d = dict((name, re.compile("%s=[a-z]+&" % name) for name in a) - cdhowie
那么,如果我以后想在一个字符串上使用上面分配的正则表达式呢? - abhixec
@abhinav:只需从字典中检索即可:d["nt"]等。 - Sven Marnach

0

毫无疑问,最好使用字典键而不是变量。但是请注意,在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的答案。

1
不允许更改vars()locals()返回的字典。你只能更改globals()返回的字典。你的代码能够正常运行,是因为你在全局范围内执行它,但在函数中它将无法工作。 - Sven Marnach
True。这显然不是一个可行的解决方案,只是一个有趣的特点。 - joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接