Python:嵌套字典重复值

问题描述:

我不是那种在python中经验丰富的人,所以可能会出现这种情况,我错过了已经存在的东西..但是如果有人能帮我解决这个问题,那将是非常棒的。 我有一个嵌套的字典是以下形式的东西: 主要词典有项:用户ID 然后在这个特定的用户评分(也许)20种产品, 所以嵌套词典有一个关键:产品ID 和价值是评级 我从文件中读取这些:其中,第一个字是用户ID,第二个字是电影ID:第三字评级Python:嵌套字典重复值

dataDict={} 
innerDict = {} 
for line in myFile: 
     words = line.strip().split() 
     userId = words[0] 
     movieId = words[1] 
     rating = words[2] 
     innerDict[movieId] = rating 
     dataDict[userId] = (innerDict) 
     innerDict = {} 

但显然行 innerDict [用户id] = innerDict将创建一个新的(而不是将它追加到最后一个..) 我写了API的方式,我必须与这些datastructures only ..(没有追加到列表)它只能是一个嵌套字典.. 谢谢

+0

您在创建它后立即删除'innerDict'。 'dataDict [userId]'然后将包含一个空字典... –

在这里,你需要添加一个新的内部字典,只有当它还不存在,右?然后,你需要使用setdefault

dataDict={} 
for line in myFile: 
     words = line.strip().split() 
     userId = words[0] 
     movieId = words[1] 
     rating = words[2] 
     innerDict = dataDict.setdefault(userId, {}) 
     innerDict[movieId] = rating 

您的结构

datadict = {"user1": {"Gladiator": 9, "Ghost": 2, "Jurassic Park": 8}, 
      "user2": {"E.T.": 0, "300": 10} 
      } 

,对吗?

然后你只需要setdefault()

datadict.setdefault(userId, {})[movieId] = rating 

setdefault创建如果该键不存在新的空字典,否则返回你已经得到了字典。