在一个dict中标识一个键,并使用它修改另一个di的值

2024-04-20 04:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我正在创建的基于文本的RPG,我有一些字典,概述了游戏中的各种宗教、种族等。这些宗教的一些价值观包括玩家统计的buff,例如:

religion_Dict = {'Way of the White': {'buffs': {'intelligence': 5, 'defense': 3},
                                     'abilities': [...],
                                     'description': '...'}}

我的问题来了,当试图应用一个宗教的统计增益球员的统计。如果我有一个类似这样的player类:

class Player(object)    
    def __init__(self):
        ...
        self.religion = None
        self.stats = {'intelligence': 10, 'defense': 8}

现在,假设玩家加入了宗教Way of the White,我该如何识别键intelligencedefense以及它们各自的值--在字典religion_dict中--并将它们应用到玩家的stats字典的值上?你知道吗

我知道我可以用religion_Dict.keys()或者一个基本for循环来提取键名,但是我如何使用它来正确地修改相应的player stat值呢?你知道吗

我肯定我只是缺少一个基本的概念。无论如何,感谢任何愿意帮助回答这个简单问题的人!我很感激!你知道吗


Tags: ofthe文本self字典stats玩家dict
3条回答
self.stats = religion_Dict['Way of the White']['buffs']

以下是您将如何进行此操作的草图:

religion_Dict = {'Way of the White': {'buffs': {'intelligence': 5, 'defense': 3},
                                     'abilities': [...],
                                     'description': '...'}}
buffs = religion_Dict['Way of the White']['buffs']

for key in buffs:
    player.stats[key] = player.stats.get(key,0) + buffs[key]

当然,您应该在Player类的方法中包装这个逻辑,但是上面的逻辑就是您要寻找的。注意.get方法接受第二个参数,如果没有键值,它将返回默认值。因此,这一行将把1加到任何stat中,如果它不存在,就把1加到0中。你知道吗

这为Player添加了一个方法,将字典中的值分配给玩家统计信息。它使用get来确保值在字典中,并且它包含字段buffs。如果是这样,它将获得intelligencedefense的值,并将它们添加到玩家的统计数据中。你知道吗

class Player(object)    
    def __init__(self):
        ...
        self.religion = None
        self.stats = {'intelligence': 10, 'defense': 8}

    def join_religion(religion):
        stats = religion_dict.get(religion)
        if stats and 'buffs' in stats:
            self.intelligence += stats['buffs'].get('intelligence', 0)
            self.defense += stats['buffs'].get('defense', 0)

p = Player()
p.join_religion('Way of the White')

相关问题 更多 >