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