获取变量值的最佳方法

时间:2013-12-11 06:24:52

标签: python

我有一堆变量

myvar1='say1'
myvar2='say2'
myvar3='say3'
myvar4='say4'
myvar4='say5'

要打印它们,我使用像

这样的for循环
for i in (range 1,6):
  print('{}-{}'.format(i,vars()['myvar'+str(i)]))

这会产生

1-say1
2-say2
3-say3
4-say4
5-say5

我的问题很简单,这是最好的方法(我的意思是var()[]部分)。我倾向于使用这种东西(不只是用于打印变量值...)而且我认为它看起来很时髦。我一直在寻找其他的例子,我真的没有找到任何。那么,有更好的方法吗?

所以最终我想知道从变量中的变量名获取值的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

So, is there a better way

当然,为什么不只是使用一个列表,或者如果你需要更多的estoric编号,请使用字典(或者如果订单很重要,请使用OrderedDict`?

带列表的示例代码

>>> myvar = ['say1','say2','say3','say4','say5']
>>> for index, var in enumerate(myvar, 1):
    print "{}-{}".format(index ,var)


1-say1
2-say2
3-say3
4-say4
5-say5

使用OrderedDict的示例代码

>>> from collections import OrderedDict
>>> myvar = OrderedDict(
            [('a','say'),
             ('b','say2'),
             ('c','say3'),
             ('d','say4'),
             ('e','say5')])
>>> for key, value in myvar.items():
    print "{}-{}".format(key,value)


a-say
b-say2
c-say3
d-say4
e-say5

答案 1 :(得分:1)

根据OP的评论,最好的方法是使用密钥/值对的Python dict Dictionary )。

示例:

data = {
    "1": "say1",
    "2": "say2",
    "3": "say3",
}

然后得到相同的输出::

for k, v in data.items():
    print("{}-{}".format(k, v))

<强>输出:

1-say1
2-say2
3-say3