将 Python 个字典从一个字典移动到另一个字典

Move Python Dictionary From A Dictionary to Another

我正在 Python 中制作游戏并将字典作为项目存储在列表中:

equipped = {}

swords = {
        'wooden_sword': {'name': 'Wooden Sword', 'dmg': 1}
}

我如何将 wooden_sword 项目移动到 equipped 列表中。

(如果我使用的术语不正确,请随时编辑)

您可以将 equipped 字典中键 'wooden_sword' 处的值(实际上是值的副本)分配给 swords 字典中的值,然后从 swords:

...

equipped['wooden_sword'] = swords['wooden_sword'].copy()

del swords['wooden_sword']

print(swords)
print(equipped)

输出:

{}
{'wooden_sword': {'name': 'Wooden Sword', 'dmg': 1}}

如果您要移动的这些词典具有除 int/str/float 之外的更多值(其他值,例如 lists/dicts/...),则考虑使用 deepcopy 复制那些内部值以及:

...
from copy import deepcopy

equipped['wooden_sword'] = deepcopy(swords['wooden_sword'])
...

使用类似于:

equipped['wooden_sword'] = swords['wooden_sword'].copy()

我建议给剑加上另一个属性而不是移动它,像这样:

swords = {
        'wooden_sword': {
            'name': 'Wooden Sword',
            'dmg': 1,
            'equipped': True
        }
}

像这样你可以只更改 1 个字典中的一个属性。

假设您的 "equipped" 是一本字典(由您使用花括号这一事实表示),您将这样做:

equipped.update({'wooden_sword':swords['wooden_sword']})
del swords['wooden_sword']

我建议使用 class 来保留角色物品的实例。然后添加任何你想要的东西,比如剑,作为 class 的属性,如下所示:

class Equipment:
    def __init__(self):
        self.swords = {}

    def add_sword(self, sword):
        self.swords.update(sword)

然后你可以有这样的东西:

equipment = Equipment()

sword = {
    'wooden_sword': {'name': 'Wooden Sword', 'dmg': 1}
}

equipment.add_sword(sword)

当然,你也可以把那个剑词典变成另一个 class 剑(我再次推荐)。 希望对您有所帮助,祝您游戏顺利!