0

我有两个变量如下:

a = "1"
b = "21" 

和一个清单:

['a', 'b', '3', '4', '5', '64']

我将如何用列表中的值替换变量名,例如:

['1', '21', '3', '4', '5', '64']
4

4 回答 4

4

我猜你的意思不是你只需要给出变量的名称,而不是字符串?

你可以做一个“怪物”,例如:

a = '1'
b = '21'

els = ['a', 'b', '3', '4', '5', '64']
print [vars().get(el, el) for el in els]
# ['1', '21', '3', '4', '5', '64']

但是,如果您处于正在这样做或正在考虑这样做的情况下-是时候再考虑一下了

于 2012-10-19T01:09:00.040 回答
1

首先构造一个字典进行查找?

lookup = {'a':'1', 'b':'21'}

那么你就可以开始了:

print [lookup[x] if x in lookup else x for x in c ]
['1', '21', '3', '4', '5', '64']
于 2012-10-19T01:08:22.873 回答
0

您只需删除引号:

a = "1"
b = "21"
[a, b, "3", "4", "5", "64"]

输出将是["1", "21", "3", "4", "5", "64"]

于 2012-10-19T01:06:12.763 回答
0

作为其他答案的替代方法,eval如果变量名称必须作为字符串存在于列表中,您可以使用。对于您的示例,以下代码:

eval(list[0])

将评估为 1(前提list是您的列表的变量)。

但是你必须小心,因为如果变量不存在,它会抛出一个NameError,如果你不传递一个字符串、字节或代码对象,它会抛出一个TypeError

于 2012-10-19T01:08:44.087 回答