python中的LRUcache行为

时间:2017-07-25 13:37:19

标签: python

我正在使用来自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])

1 个答案:

答案 0 :(得分:1)

显然这是导致问题的嵌套dicts字典的词典,我使用GivenQuestionsCache[studentId][studentId].append([int(questi‌​onId),None])

解决了这个问题