0
私はcachetoolsのLRUCacheを使用してdictの形式でデータを保存していますが、不足している工場の概念の動作を理解するのに苦労しています。今PythonのLRUcacheの動作
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]]}
は、なぜそれがまた値と一緒に鍵を印刷している印刷します? はまた、このために、私はどうやらそれが問題を引き起こした、ネストされたdictsの辞書の辞書だったこの
GivenQuestionsCache[studentId].append([int(questionId),None])
'getGivenQuestions'が戻っているを使用して、これを解きます'dict'なので、' LRUCache'には辞書が入っているのです。 '1 'は' int(each [1]) 'の値です。 – EsotericVoid
GivenQuestionsCache [1] .append([int(questionId)、None])が正しく動作するはずです。 しかし、それはエラーをスローします - '' dict 'オブジェクトには属性' append ''がありません – Bhargav
あなたの実装では、 'GivenQuestionsCache'は' dict'の 'dict'です(' LRUCache'は 'dict 'キーが' studentId'であり、欠けているキーを埋めるために提供するメソッドは 'each [1]'からキーが形成される 'dict'を返します。あなたの最初のdictへのアクセスのみ。あなたがあなたの質問の意味を分かち合うなら、より良いデータ構造についてより詳細な助言を与えることができます。 – EsotericVoid