我正在使用来自cachetools的LRUCache以dict的形式存储一些数据,我很难理解缺失工厂概念的行为,有人可以帮忙吗?
GivenQuestionsCache=LRUCache(maxsize=100,missing=getGivenQuestions)
def getGivenQuestions(studentId):
cur=db.cursor()
cur.execute(*query*)
questions={}
for each in cur.fetchall():
if(int(each[1]) in questions):
questions[int(each[1])].append([each[3],each[4]])
else:
questions[int(each[1])]=[[each[3],each[4]]]
return questions
现在,当我做的时候
print(GivenQuestionsCache[studentId])
我期待像
这样的东西[[211736, None], [211736, 'a'], [207113, 'a'], [219556, None], [207095, None], [89027, None], [89027, None]]
但打印
{1: [[211736, None], [211736, 'a'], [207113, 'a'], [219556, None], [207095, None], [89027, None], [89027, None]]}
为什么还要打印键和值? 另外,因此,我无法像这样使用追加
GivenQuestionsCache[studentId].append([int(questionId),None])
答案 0 :(得分:1)
显然这是导致问题的嵌套dicts字典的词典,我使用GivenQuestionsCache[studentId][studentId].append([int(questionId),None])