2015-09-15 254 views
-1

我正在使用python,我只是想知道是否可以将变量名存储在另一个列表中。从python列表中访问变量名

Achievement = ['hi', 'hey', 'hello'] 
lines = ['Achievement', 'hi'] 
print lines[0][2] 

我想要的输出为“你好”在这种情况下。 任何人都可以提出任何方式来实现这一点。

+2

使用字典会在这里正确的事情 – The6thSense

+0

你可以在另一个列表存储变量(不变量名)。 '线= [成就,'嗨']' – kvorobiev

+0

我不明白在这里downvotes。这本身并不是一个坏问题,即使这个想法很糟糕。 – glglgl

回答

6

通常如果要动态查找在Python代码名称,正确的解决方案是使用映射。在Python中,基本映射对象是字典。示例代码,你想要做什么,可以如下:

d = {'Achievement': ['hi', 'hey', 'hello']} 
key = 'Achievement' 
index = 2 
print d[key][index] 
1

这是可能的,是的。您可以通过访问globals()和/或locals()并使用它们的结果(这是varname的一个词典:varcontent)来实现。

但这是非常糟糕的风格,因为你可以阅读here

有这样做,包括

Achievement = ['hi', 'hey', 'hello'] 
lines = [Achievement, 'hi'] 
print lines[0][2] 

或使用字典或其他事情的更好的方法。

1

但是,如果你真的想这样做

代码:

d=globals() 
d[lines[0]][2] 

输出:

'hello' 
1
Achievement = ['hi', 'hey', 'hello'] 
lines = ['Achievement', 'hi'] 
print eval(lines[0])[2] 
+0

使用'eval'通常是不好的做法。看[这个答案](http://stackoverflow.com/a/1832957/3087339) – elParaguayo