我正在尝试加载我的数据,因此它存储在字典词典中。但是我收到了这个错误:
self.user_rating(mid, {} ) #Dictionary of dictionaries = urating
TypeError: 'dict' object is not callable
这是此特定方法的代码。
def load_r(self,file):
f = open(file)
for line in f:
line = line.rstrip()
components = line.split("::")
uid = components[0]
mid = components[1]
urating = components[2]
self.user_rating(mid, {} ) ###Line of interest
f.close()
字典应该是
目标:字典[mid,dictionary2 [uid,urating]] 如字典[key,dictionary2 [key,value]]
我应该将self.user_rating行设置为等于什么?谢谢!
编辑(更新):当我尝试拨打
时self.mdb.set_user_m_rating(41, 787, 2)
我在第
行收到错误self.user_rating[mid][uid] = rating
这是在将行更改为self.user_rating [mid] = {}之后 但后来调用self.user_rating [mid] [uid] =另一种方法评分。
答案 0 :(得分:1)
字典词典没有神奇的特殊语法。您只需使用常规字典语法两次即可获得内部字符串的值。
self.user_rating
是一个词典。
你查找像这样的子词
self.user_rating[mid] # the value here is a subdict
因此通过添加另一个键查找来找到子句中的值
self.user_rating[mid][uid]
当然要创建一个空的子文件
self.user_rating[mid] = {}
然后添加这样的评分
self.user_rating[mid][uid] = rating
如果uid
可能已有值,则可以测试
if uid in self.user_rating[mid]:
self.user_rating[mid][uid] = rating
else:
self.user_rating[mid] = {uid: rating}
当您完成这些基础知识后,您应该阅读collections.defaultdict