如何从另外两个字典创建字典

时间:2019-11-18 23:43:23

标签: python dictionary

我遇到了字典问题(python 3+)。 我在python的两个不同字典中上载了两个不同的txt文件。 因此,现在我想将Dictionary1和Dictionary2的一些参数组合起来,以构建新的字典。

ratings: [ ["142", "196", 5] ]

title: { "196" : "Noisy", "233" : "The Sunshine" }

并且我想创建一个新字典,以用户ID作为键(例如,“ 142”(来自评级))和标题作为值(通过索引到标题,例如title [“ 196”]来检索)。

我的代码是:

第一个:

try:
    ratings = {}
    for line in open('u.ratings'):
        line = line.split('\t')[0:3]
        print(line)
except IOError as ioerr:
        print('File error: ' + str(ioerr))
print(ratings)

第二个:

try:
    movies = {}
    for line in open('u.movies'):
        (id, title) = line.split('|')[0:2]
        movies[id] = title

except IOError as ioerr:
    print('File error: ' + str(ioerr))
print(movies)

3 个答案:

答案 0 :(得分:0)

好的,我会做一些假设:

用户ID是给定的,是以某种方式收集的,在这种情况下为user_id = 142

由于已经加载了数据,因此您可以使用第一个字典索引到第二个字典中,而不用创建第三个字典。 (如果您只需要一个数据源,请开始研究Python随附的SQLite数据库。)

user_id = 142

reviewed_title = title[ratings[user_id]]

答案 1 :(得分:0)

如果我正确理解你的话:

x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}

def two_dicts_in_one(x, y):
    z = x.copy()   
    z.update(y)    
    return z

z = two_dicts_in_one(x, y)

print(z)

输出:

{'a': 1, 'b': 3, 'c': 4}

答案 2 :(得分:0)

我很难理解您要做什么。 如果您想将电影的评级附加到电影词典中,并保留该评级的用户ID,建议您尝试类似的操作

movies= {
"196":{"name":"Noisy","ratings":[]},
"233":{"name":"The Sunshine","ratings":[]}
}
ratings = [
 {"userID":"142","movieID":"196","num": 5},
 {"userID":"142","movieID":"233","num": 4},
 {"userID":"142","movieID":"196","num": 4.3},
]

for rating in ratings:
  movies[rating["movieID"]]["ratings"].append(rating)

print(movies)

for循环使用包含所有评分数据的对象为每个电影填充一个评分数组。

希望有帮助。