Вопрос:
Я пытаюсь загрузить мои данные, чтобы он хранился в словаре словарей. Но я получаю эту ошибку:
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()
Словарь должен быть чем-то вроде
GOAL: словарь [mid, dictionary2 [uid, urating]] как в словаре [key, dictionary2 [key, value]]
Предполагаю ли я, что личность self.user_rating равна чему-то? Спасибо!
EDIT (обновление): когда я пытаюсь позвонить
self.mdb.set_user_m_rating(41, 787, 2)
Я получаю сообщение об ошибке в строке
self.user_rating[mid][uid] = rating
Это происходит после изменения строки на self.user_rating [mid] = {}, но позже вызывается self.user_rating [mid] [uid] = рейтинг другим способом.
Лучший ответ:
Не существует специального специального синтаксиса для словарей словарей. Вы просто используете обычный синтаксис словаря дважды, чтобы получить значения внутренних dicts.
self.user_rating – это 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