Python:嵌套字典重复值
我对Python不是很熟悉,所以可能有些东西我没搞明白。如果有人能帮我解决这个问题,那就太好了。 我有一个嵌套字典,结构大致是这样的: 主字典的键是用户ID,然后在这个字典里,特定用户可能给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
你的结构是
datadict = {"user1": {"Gladiator": 9, "Ghost": 2, "Jurassic Park": 8},
"user2": {"E.T.": 0, "300": 10}
}
对吧?
那么你只需要用一下 setdefault()
方法:
datadict.setdefault(userId, {})[movieId] = rating
setdefault
方法会在这个键还不存在的时候,创建一个新的空字典;如果这个键已经存在了,它就会返回你已经拥有的那个字典。
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