如何用值替换列表中的变量名?

时间:2012-10-19 01:01:23

标签: python

我有两个变量如下:

a = "1"
b = "21" 

和一个清单:

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

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

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

4 个答案:

答案 0 :(得分: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']

但是如果你处于这样的情况,或者想要这样做的话 - 是时候重新思考了

答案 1 :(得分: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']

答案 2 :(得分:0)

您只需删除引号:

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

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

答案 3 :(得分:0)

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

eval(list[0])

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

你必须要小心,因为如果变量不存在,它将抛出NameError,如果你没有传递一个字符串,字节或代码对象,它将抛出一个{{1 }}