如何添加到词典,但不添加词典 - Python

时间:2013-08-07 20:38:14

标签: python dictionary

我需要一本字典,我可以编辑。不添加一个全新的值,但添加到'类'???在字典里面。例如角色统计。

if race == 'orc': if Class == 'worrier': stats = ['strength': 6, 'intelligence': 2]'

我怎样才能增加力量? (我知道你不能添加字典,这就是为什么我需要类似的东西)。

4 个答案:

答案 0 :(得分:4)

  

我知道你不能添加字典

实际上,你可以:

>>> characters = {}
>>> characters['warrior'] = {}
>>> characters['warrior']['orc'] = {}
>>> characters['warrior']['orc']['strength'] = 5
>>> characters['warrior']['orc']['intelligence'] = 2
>>> characters
{'warrior': {'orc': {'intelligence': 2, 'strength': 5}}}
>>> characters['warrior']['orc']['strength'] += 3
>>> characters
{'warrior': {'orc': {'intelligence': 2, 'strength': 8}}}

但是,你可以说这不是很理想。您更合适的是存储所有属性的对象,提供添加各种属性的方法。然后存储这些对象的集合。

class Character(object):
     def __init__(name, type, category, strength, intelligence):
         self.strength = strength
         self.intelligence = intelligence
         self.name = name
         self.type = type
         self.category = category

     def make_smart_or_dumb(self, intelligence):
         self.intelligence += intelligence

     def make_strong_or_weak(self, strength):
         self.strength += strength

     def is_dead(self):
         return self.strength < 0

gunar_the_orc = Character('Gunar','Orc', 'Warrior', 10, 5)
smith_the_human = Character('Smith','Human','Warrior', 5, 10)

game_characters = [gunar_the_orc, smith_the_human]

现在,你想给兽人一些力量:

gunar_the_orc.make_strong_or_weak(3)

让他变弱:

gunar_the_orc.make_strong_or_weak(-2)

这样,当你进行“战斗”时,你可以接受每种武器的影响,然后减去造成的伤害,直到当然兽人因为力量小于0而死亡 - 这就是为什么我加上{{ 1}}方法。

以下是“游戏”的样子:

is_dead()

答案 1 :(得分:1)

目前还不清楚你在这里问什么,所以我假设你想知道如何在字典中添加一个值。

试试这个:

>>> dictionary = {"strength": 6, "intelligence": 2};
>>> dictionary["strength"] += 7;
>>> print(dictionary);
{'strength': 13, 'intelligence': 2}    print(dictionary)

但是,在这种情况下,我建议您查看classes。这将允许您改为myorc.strength += 7,并进一步创建彼此继承的单元类,例如。食人魔就像一个兽人,但强度更高,不需要重写大量代码。

编辑:通过阅读您的评论,您可能希望在字典中添加新的键值对。为此,请执行dictionary[key] = value。如果key不是字典的键,它将创建该对,如果是,则更新该值。

答案 2 :(得分:0)

char = {"race" : "orc", "class" : "worrier", "stats" : {"strenght" : 6, "intelligence" : 2}}
char["stats"]["strenght"] += 1
# output -> {'race': 'orc', 'stats': {'intelligence': 2, 'strenght': 7}, 'class': 'worrier'}
# Append something to stats
char["stats"].update({"stamina" : 5})
# output -> {'race': 'orc', 'stats': {'stamina': 5, 'intelligence': 2, 'strenght': 7}, 'class': 'worrier'}

答案 3 :(得分:-1)

为什么不stats['strength'] = stats['strength'] + n