我不是那种经验丰富的python所以可能是我错过了已经存在的东西的情况......但是如果有人能帮助我解决这个问题会很棒。 我有一个嵌套字典,它是以下形式的东西: 主词典有关键:userid 然后在这个特定用户评价(可能)20种不同的产品 所以嵌套字典有一个键:产品ID 而价值就是评级 我正在从文件中读取这些内容:第一个单词是用户ID,第二个单词是电影ID:第三个单词是评级
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 [userId] = innerDict将创建一个新的(而不是将它附加到最后一个..) 我编写API的方式,我只能使用这些数据结构..(没有附加到列表)它必须只是一个嵌套字典.. 感谢
答案 0 :(得分:2)
这里你需要在外部字典中添加一个新的内部字典,只有它还不存在,对吗?然后你需要使用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
答案 1 :(得分:0)
您的结构是
datadict = {"user1": {"Gladiator": 9, "Ghost": 2, "Jurassic Park": 8},
"user2": {"E.T.": 0, "300": 10}
}
右?
然后你需要setdefault()
:
datadict.setdefault(userId, {})[movieId] = rating
如果密钥尚不存在, setdefault
会创建一个新的空字典,否则返回你已经获得的字典。