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 ..(没有追加到列表)它只能是一个嵌套字典.. 谢谢
答
在这里,你需要添加一个新的内部字典,只有当它还不存在,右?然后,你需要使用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
创建如果该键不存在新的空字典,否则返回你已经得到了字典。
您在创建它后立即删除'innerDict'。 'dataDict [userId]'然后将包含一个空字典... –