首页 > 解决方案 > 如何使用字符串变量的内容来引用字典中的“字符串定义”键?

问题描述

我目前正在尝试制作一个不同类型都有弱点的战斗系统。这些弱点作为键的字符串值存储在其“主类型”下的字典中。我正在尝试使用另一个具有完全相同字符串格式的变量(即,如果我想要的键是“正常”,那么另一个变量也是“正常”。

但是,当我尝试将 .get() 方法与其中的其他变量一起使用时,它只会返回一个“NoneType”值并关闭我的所有代码。

下面是我用来将值加载到字典中的代码。

def weakness_load():
    pokeweakness.seek(0)
    dump = pokeweakness.read().split("\n")
    for i in dump:
        print(i)
        if i != "":
            basetype,allbaseweaknesses = i.split(",")
            print(basetype,allbaseweaknesses)
            weakness_dict[basetype] = allbaseweaknesses
            print(weakness_dict[basetype])
            print("\n")

下面是我用来查看防御者类型对攻击者类型是否弱的代码。

def check_weakness(attack,defender,mover):
    defweakness = weakness_dict.get(defender)
    print(defweakness)
    if attack in defweakness:
        plattackcrit = False
        aiattackcrit = False
        if mover == 1:
            plattackcrit = True
            return(plattackcrit)
        elif mover == 2:
            aiattackcrit = True
            return(aiattackcrit)

上面的代码在到达时失败

如果攻击弱点:

因为“TypeError:类型的参数:'NoneType' 不可迭代。”

字典的样本数据:

键:摇滚 || 数据:格斗;钢铁;地面;水;草;

任何帮助将不胜感激,因为我不太确定如何解决这个问题,而且我也在努力在网上找到任何内容。

标签: pythondictionarykey

解决方案


解决了

就像一个彻头彻尾的白痴一样,我忘记了返回weakness_dict,所以我实际上从未存储过更新的字典。

我确保在调用我的主代码之前将“weakness_load()”函数更新为return weakness_dict并添加weakness_dict = weakness_load(),以便在代码运行之前全部加载。


推荐阅读