首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中的字典中添加2个不同整数键的整数值?

如何在python中的字典中添加2个不同整数键的整数值?
EN

Stack Overflow用户
提问于 2022-01-31 13:44:56
回答 3查看 57关注 0票数 0

嗨,我有一个程序,我用字典来创建玩家,统计是名字,攻击,防守,总计。我是否有办法在字典中设置总数,或者我必须在字典外加进攻击和防御,然后把它放回字典里?

代码语言:javascript
复制
Player1 = {
    "name":"Bob",
    "attack":7,
    "defence":5,
    "total":Player1["attack"]+Player1["defence"],
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-31 13:53:12

不幸的是,就我所知,你的要求是做不到的.你最好用一门课

就像这样:

代码语言:javascript
复制
class Player:

    def __init__(self):
        self.name = "Bob"
        self.attack = 7
        self.defence = 5
        self.total = self.attack + self.defence

player = Player()
print(player.total)

您需要记住的是,在声明dict时没有实例化它,因此在{}中不能调用Player1,因为上下文中还不存在它。

通过使用类,您还可以通过执行以下操作来重用上面的示例:

代码语言:javascript
复制
class Player:

    def __init__(self, name, attack, defence):
        self.name = name
        self.attack = attack
        self.defence = defence
        self.total = self.attack + self.defence

player1 = Player(name="bob", attack=7, defence=5)
player2 = Player(name="bill", attack=10, defence=7)
print(player1.total)
print(player2.total)

编辑:固定排版

票数 1
EN

Stack Overflow用户

发布于 2022-01-31 13:53:58

您目前正在尝试在创建Player1之前访问它。

你可以这样做:

代码语言:javascript
复制
Player1 = {
    "name":"Bob",
    "attack":7,
    "defence":5
}
Player1["total"] = Player1["attack"] + Player1["defence"]

但是,这并不理想,因为每当'total''defence'更改时,您都需要记住调整'defence'字段。最好是动态计算总价值,因为这不是一个昂贵的计算。

这可以通过编写带有属性Playertotal类来实现。

代码语言:javascript
复制
class Player:
    def __init__(self, name, attack, defence):
        self.name = name
        self.attack = attack
        self.defence = defence

    @property
    def total(self):
        return self.attack + self.defence

演示:

代码语言:javascript
复制
>>> Player1 = Player('Bob', 1, 2)
>>> Player1.name, Player1.attack, Player1.defence, Player1.total
('Bob', 1, 2, 3)
票数 1
EN

Stack Overflow用户

发布于 2022-01-31 14:38:12

假设您不想自己计算键总数的值。您可以将其初始化为None (标准实践)。总比忽略它好)。

代码语言:javascript
复制
Player1 = {
    "name":"Bob",
    "attack":7,
    "defence":5,
    "total":None
}

然后稍后更新它的值。

代码语言:javascript
复制
Player1["total"] = Player1["attack"] + Player1["defence"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70927012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档