从字典关键字创建变量

时间:2019-07-24 13:36:13

标签: python python-3.x dictionary

我有一本叫做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_score函数中创建的变量。 / p>

1 个答案:

答案 0 :(得分:0)

如果您只想对值求和,为什么不选择这样的东西呢?

categories = {'a':0.12,'b':0.56}
s = sum(categories.values())
相关问题