Python:嵌套字典重复值

时间:2011-09-08 16:34:37

标签: python dictionary nested

我不是那种经验丰富的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的方式,我只能使用这些数据结构..(没有附加到列表)它必须只是一个嵌套字典.. 感谢

2 个答案:

答案 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会创建一个新的空字典,否则返回你已经获得的字典。