Python:嵌套字典重复值

Python:嵌套字典重复值,python,dictionary,nested,Python,Dictionary,Nested,我在python方面没有那么丰富的经验,所以可能是我缺少了一些已经存在的东西。。但如果有人能帮我解决这件事就太好了。 我有一个嵌套字典,其形式如下: 主字典具有键:userid 然后在这方面,特定用户对20种不同的产品进行了评级(可能) 因此嵌套字典有一个键:product id 价值就是评级 我从一个文件中读到这些:第一个单词是用户id,第二个单词是电影id,第三个单词是评级 dataDict={} innerDict = {} for line in myFile: word

我在python方面没有那么丰富的经验,所以可能是我缺少了一些已经存在的东西。。但如果有人能帮我解决这件事就太好了。 我有一个嵌套字典,其形式如下: 主字典具有键:userid 然后在这方面,特定用户对20种不同的产品进行了评级(可能) 因此嵌套字典有一个键:product 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的方式,我只需要使用这些数据结构。。(不添加到列表中)它只能是嵌套字典。。
谢谢

只有在外部dict还不存在时,才需要在外部dict中添加新的内部dict,对吗?然后您需要使用:

你的结构是

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

那么你只需要:


setdefault
如果密钥尚不存在,则创建一个新的空dict,否则将返回您已经获得的dict。

创建后立即删除
innerDict
dataDict[userId]
将包含一个空的dict。。。
datadict = {"user1": {"Gladiator": 9, "Ghost": 2, "Jurassic Park": 8},
            "user2": {"E.T.": 0, "300": 10}
           }
datadict.setdefault(userId, {})[movieId] = rating