2013-06-18 97 views
0

检索变量的值,如果我的代码:Python列表,由变量名

attRoll = 34 
hit = False 
dmg = 1 

attSequence = [attRoll, hit, dmg] 

print attSequence[dmg] 

它打印命中值(假),而不是DMG(1),我可以解决此通过进入:

print attSequence[dmg+1] 

我的问题:
- 为什么不将其打印伤害的价值?
- 有没有一种干净的方式(没有+1)来检索命中的值?

谢谢!

回答

2

attSequence是一个列表,并且dmg为1,因此attSequence[1]机构“attSequence给我在索引1(第二项)的项目”。对于你在做什么,你可能要一个dictionary(通常称为在其他语言map),存储键/值映射,所以你可以存储与“伤害”的一个关键的损害:

att = { 
    "roll": attRoll, 
    "hit": hit, 
    "dmg": dmg 
} 
print att["dmg"] 

你也可以把文字在地图上,这样你就可以这样做:

att = { 
    "roll": 34, 
    "hit": False, 
    "dmg": 1 
} 
+0

Yessss,非常有帮助,THX –

+1

除非'roll','hit'和'dmg'的定义,这是行不通的。 (最好使用这个类,但是,简单的解决方案是使用''roll“'等等)我相信你的意思是使用引号,但是:P – 2rs2ts

+1

@ 2rs2ts你是。我认为我一直在做太多的JavaScript ..我同意一个班可能会更好,但根据我自己的学习经验,在优势变得明显之前需要时间,特别是在像Python这样的语言中,只是荣耀的地图无论如何.. –