从字典关键字创建变量

2024-04-20 16:06:16 发布

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

我有一个我称之为categories = {category1:weight,category2:weight}的字典,其中category1,2是包含类别名称的字符串,weight是介于0和1之间的浮点数。在函数中,我希望使用

for category in categories:
    locals().update(category=0)

以便我以后用它们来总结。我不能预先创建这些,因为我无法预先确定需要创建多少个类别。然而,当我运行这个程序时,我发现我的本地名称空间看起来和我运行添加了'category':0的代码之前完全一样,所以我不确定发生了什么。我的全部输出是

>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'd': {'category1': 0.5, 'category2': 0.2}}
>>> for key in d:
...     locals().update(key=0)
... 
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'd': {'category1': 0.5, 'category2': 0.2}, 'key': 0}

我最好的猜测是,当我使用赋值运算符=时,python忽略了我从字典中提取的关键字

如果是这样的话,实现预期结果的正确方法是什么

更新

这段代码是一个程序的一部分,我正在写的行为作为我的班级成绩册。实际上,我并不关心字典中与每个类别相关的值。还有另一本叫做分数的字典,里面有作业标题和每个学生的相应分数。我想做的是创建变量,我可以很容易地引用,然后添加整数分数,以便我可以计算成绩。就我目前所知,这似乎是实现这一目标的最佳途径

更新

我有一些伪代码来解释我要找的东西:

total = 0
    for category in categories:
        total += (category_weight*category)/category_total

    print(total)

其中每个类别都是一个初始值为0的整数变量。我要做的是滥用类别字典中的键,以便能够使用它们引用在calculate\u score函数中创建的变量


Tags: key代码innonefor字典类别total