我有一个测验,其中class
是用户的类(1,2或3),name
是用户的名称,score
是用户的分数。如果同一用户再次完成测验,则class
和name
将相同,但score
会有所不同。
我想要做的是将数据存储为:
scores_class1 = {
'myname': [5, 4, 5, 10, 9],
'otherperson': [10],
}
如果用户在1级,则他的name
和score
将存储在名为scores_class1
的词典中,而不是scores_class2
或scores_class3
格式如上。此外,如果用户已经进行过一次测验,则只需将其分数添加到列表中,而不是创建重复的密钥。
答案 0 :(得分:0)
你不能使变量名动态,但是你可以从class_num = 2构造一个字符串(不能使用类,保留字)并将该名称用作dict中的键:
from collections import defaultdict
classes = defaultdict(dict)
class_num = 2
classes['scores_class%s' % class_num]['myname'] = [5, 4, 5, 10, 9]
classes['scores_class%s' % class_num]['otherperson'] = [10]
结果将是:
defaultdict(<type 'dict'>, {'scores_class2': {'myname': [5, 4, 5, 10, 9], 'otherperson': [10]}})