我正在使用python,我只是想知道是否可以将变量名存储在另一个列表中。从python列表中访问变量名
Achievement = ['hi', 'hey', 'hello']
lines = ['Achievement', 'hi']
print lines[0][2]
我想要的输出为“你好”在这种情况下。 任何人都可以提出任何方式来实现这一点。
我正在使用python,我只是想知道是否可以将变量名存储在另一个列表中。从python列表中访问变量名
Achievement = ['hi', 'hey', 'hello']
lines = ['Achievement', 'hi']
print lines[0][2]
我想要的输出为“你好”在这种情况下。 任何人都可以提出任何方式来实现这一点。
通常如果要动态查找在Python代码名称,正确的解决方案是使用映射。在Python中,基本映射对象是字典。示例代码,你想要做什么,可以如下:
d = {'Achievement': ['hi', 'hey', 'hello']}
key = 'Achievement'
index = 2
print d[key][index]
这是可能的,是的。您可以通过访问globals()
和/或locals()
并使用它们的结果(这是varname的一个词典:varcontent)来实现。
但这是非常糟糕的风格,因为你可以阅读here。
有这样做,包括
Achievement = ['hi', 'hey', 'hello']
lines = [Achievement, 'hi']
print lines[0][2]
或使用字典或其他事情的更好的方法。
但是,如果你真的想这样做
代码:
d=globals()
d[lines[0]][2]
输出:
'hello'
Achievement = ['hi', 'hey', 'hello']
lines = ['Achievement', 'hi']
print eval(lines[0])[2]
使用'eval'通常是不好的做法。看[这个答案](http://stackoverflow.com/a/1832957/3087339) – elParaguayo
使用字典会在这里正确的事情 – The6thSense
你可以在另一个列表存储变量(不变量名)。 '线= [成就,'嗨']' – kvorobiev
我不明白在这里downvotes。这本身并不是一个坏问题,即使这个想法很糟糕。 – glglgl