首页 > 解决方案 > 使用相同键列表映射字典以获取值

问题描述

我有一个形式的字典 id_names:

1: 'Nightwatch (1997)', 
2: 'Nobody Loves Me (Keiner liebt mich) (1994)', 
3: 'Wife, The 
.
.
.
100: 'Lamerica (1994)'

它们的键代表电影 ID,值是电影名称。

我正在遍历一个列表高:

# Finding 5 highest values 
high = k.most_common(5) 

for i in high: 
   print(i[0]," :",i[1]," ") 

带输出:

3 : 5.5  
16  : 4.4
7  : 3.7  
42 : 3.6 
83  : 3.3 

此列表的键与字典 id_movies 的键相同。我想要的是以某种方式映射两者,以便我可以获得电影的名称和分数。

我正在尝试这样的事情:

for i in high: 

print(i[0]," :",i[1]," ") 
for name, age in id_names.iteritems():
   print(movie_titles1[i[0]])

但我知道这不是 python 字典应该如何工作的......

标签: pythondictionary

解决方案


如果值i[0]是您的字典键:您可以使用此键从电影字典中获取相应的名称:

for i in high: 
    print(i[0], ":", i[1], movies.get(i[0]))

如果您想将电影的标题和发布日期作为单独的值存储在您的字典中,您可以从集合中导入 defaultdict() 并使用列表作为具有单独条目的日期和标题的值。

from collections import defaultdict


movies = defaultdict(list)
movies['1'] = ['Nightwatch', '1997']
movies['2'] = ['Nobody Loves Me (Keiner liebt mich)', '1994']
movies['3'] = ['Wife, The', None]


high = [['3',5.5],['2',4.2],['1',3.7]]

for i in high:
    print(i[0], ":", i[1], "; Title: ", movies.get(i[0])[0],';', "release date: ", movies.get(i[0])[1])

输出:

3 : 5.5 ; Title:  Wife, The ; release date:  None
2 : 4.2 ; Title:  Nobody Loves Me (Keiner liebt mich) ; release date:  1994
1 : 3.7 ; Title:  Nightwatch ; release date:  1997

推荐阅读