Лучший способ создать этот dict в Python - PullRequest
0 голосов
/ 22 марта 2011

это мой код:

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 ]

3 голосов
/ 22 марта 2011

Я бы остановился и подумал, зачем ты это делаешь.Я не могу помочь, но думаю, что это не обязательно.

Даже если вы решите, что это необходимо (в чем я сомневаюсь) - вы в значительной степени воссоздаете globals().Введите это в свой переводчик и посмотрите, хотите ли вы все еще сделать это.

Организуйте это далее, как senderle, предложенный в вашем другом посте.И, возможно, опубликуйте более широкий вопрос с помощью для организации вашего проекта.

2 голосов
/ 22 марта 2011

Первое, что я хотел бы сделать, это переформатировать этот словарь, чтобы в каждой строке было одна запись:

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

Я также выстроил столбцы, чтобы весь список читался легче.

0 голосов
/ 22 марта 2011

Я полностью согласен с @miku - посмотрите, как вы используете значения и серьезно рефакторинг.

Например, у персонажа есть атрибуты (физическая атака, физическая защита, магическая атака, магическая защита, вес, скорость) и предметы; Оружие - это Предметы, Мечи и Топоры, Копья и Луки - это Оружие, Сабля - это Меч. Безоружный - это специальное оружие по умолчанию. Подвески - это предметы, но, очевидно, книги и струнные инструменты - это оружие. Предметы имеют Атрибуты, которые добавляются к Атрибутам Персонажа во время экипировки. У персонажа также есть уровень, местоположение, цель и рейтинг точности для каждого типа оружия (может ли оружие иметь модификатор точности?).

Если вы разбиваете его на иерархию классов таким образом, вам будет намного легче отслеживать, что вы делаете.

0 голосов
/ 22 марта 2011

Вы можете создать массив имен переменных и извлечь их из словаря 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...