在python中创建这个dict的最佳方法

时间:2011-03-22 02:14:33

标签: python dictionary

这是我的代码:

vars_ = {
                'attackUp':attackUp,'defenceUp':defenceUp,'magicUp':magicUp,'attType':attType,'weightDown':weightDown,
                'accAttackSword':accAttackSword,'accAttackSaber':accAttackSaber,'accAttackAx':accAttackAx,
                'accAttackHammer':accAttackHammer,'accAttackSpear':accAttackSpear,'accAttackFight':accAttackFight,
                'accAttackBow':accAttackBow,'accAttackMagicGun':accAttackMagicGun,'accAttackMagic':accAttackMagic,
                'mStrInstrument':mStrInstrument,'mStrCharms':mStrCharms,'accDefencePhy':accDefencePhy,
                'accDefenceMag':accDefenceMag,'accWeight':accWeight,'bookTurn':bookTurn,'bookAttackPhy':bookAttackPhy,
                'bookAttackMag':bookAttackMag,'bookStrInstrument':bookStrInstrument,'bookStrCharms':bookStrCharms,
                'bookDefencePhy':bookDefencePhy,'bookDefenceMag':bookDefenceMag,'bookWeight':bookWeight,'name':name,
                'plvl':plvl,'str':str,'ski':ski,'mag':mag,'spd':spd,'locX':locX,'locY':locY,'wName':wName,
                'wAttack':wAttack,'wDefence':wDefence,'wWeight':wWeight,'wType':wType,'target':target,'title':title,
                'uname':uname,'cUrl':cUrl,'mbCnt':mbCnt
                }
噢,天啊,我花了很多时间在这项工作上,可能还有更多的变量可以在以后添加,

任何简单的方法,

谢谢

4 个答案:

答案 0 :(得分:3)

我会停下来考虑你为什么要这样做。我不禁认为没有必要。

即使您认为这是必要的(我怀疑) - 您几乎正在重新创建globals()。在解释器中键入它,看看你是否还想这样做。

进一步整理,例如您在其他帖子中建议的senderle。也许可以在组织项目的帮助下发布一个更广泛的问题。

答案 1 :(得分:2)

我要做的第一件事是重新格式化该字典,以便每行有一个条目:

vars_ = {
    'attackUp'  : attackUp,
    'defenceUp' : defenceUp,
    'magicUp'   : magicUp,
    'attType'   : attType,
    'weightDown': weightDown,
    # and so on
}

我还排列了列,以便更容易阅读整个列表。

答案 2 :(得分:0)

您可以创建一个变量名称数组,并将它们从locals字典中删除。

x, y, z = 5, 10, 20
l = locals()
d = {}
for v in ['x', 'y', 'z']:
    d[v] = l[v]
# d = {'y': 10, 'x': 5, 'z': 20}
如果你只是想把它作为一个字符串查找,那么

locals也可能会自行解决。

attUp = locals()['attackUp']

答案 3 :(得分:0)

我完全同意@miku - 看看你如何使用这些值并认真重构。

例如,角色具有属性(physical_attack,physical_defence,magic_attack,magic_defence,weight,speed)和Items;武器是物品,剑和斧头,矛和弓是武器,剑是剑。非武装是一种特殊的默认武器。魅力是物品,但显然书籍和StringedInstruments是武器?项目具有属性,这些属性在装备时添加到角色的属性中。角色还有每种武器类型的等级,位置,目标和准确度等级(武器有精确度修正器吗?)。

如果你以这种方式将其分解为类层次结构,那么跟踪你正在做的事情应该会容易得多。