我有一个问题,从一个综合字典和列表拉。我知道如何从每一个单独拉钥匙,但我需要把他们结合起来,从两个拉钥匙。下面是列出年份的词典示例。每年都有一个头衔和与之相关的董事
movie_collection = {
2005: {'Title':'Munich','Director':'Steven Spielberg'},
2005: {'Title':'The Prestige','Director':'Christopher Nolan'},
2006: {'Title':'The Departed','Director':'Martin Scorsese'},
2007: {'Title':'Into the Wild','Director':'Sean Penn'},
2008: {'Title':'The Dark Knight','Director':'Christopher Nolan'},
2009: {'Title':'Mary and Max','Director':'Adam Elliot'},
2010: {'Title':'The King''s Speech','Director':'Tom Hooper'},
2011: {'Title':'The Artist','Director':'Michel Hazanavicius'},
2011: {'Title':'The Help','Director':'Tate Taylor'},
2012: {'Title':'Argo','Director':'Ben Affleck'},
2013: {'Title':'12 Years a Slave','Director':'Steve McQueen'},
2014: {'Title':'Birdman','Director':'Alejandro G. Inarritu'},
2015: {'Title':'Spotlight','Director':'Tom McCarthy'},
2016: {'Title':'The BFG','Director':'Steven Spielberg'}
}
我还有代码提示输入年份在2005年和2016年之间。如果年份不在这两个年份之间,它将打印一个N/a
input_year = int(input('Enter a year between 2005 and 2016:\n'))
if input_year < 2005:
print('N/A')
elif input_year > 2016:
print('N/A')
else:
print(input_year)
现在我遇到了一个问题。在else声明之后,我还需要打印与输入年份相关的电影的标题和导演。例如,如果输入2011年,则输出需要为:
请输入2005年到2016年之间的年份: 2011 艺术家Michel Hazanavicius 救命啊,泰特·泰勒
我编写了以下代码
if input_year in movie_collection:
for Title,Director in movie_collection.values():
print(Title,',',Director)
但是它没有输出正确的信息
Enter a year between 2005 and 2016:
2011
Director , Title
Director , Title
Director , Title
Director , Title
...
我试着用多种方式列出它,但它不能正确地提取信息。我对python还是个新手,我确实尝试过google和bing,但在我寻找的信息上却一无所获。有人能给我指出正确的方向吗?我把字典写错了吗?或者我只是没有用正确的方式打印信息。谢谢
如果要继续使用数据结构,请修改列表代码,如下所示:
但是,这并不能满足您的要求,因为如注释中所述,重复的年份键会相互覆盖-请使用以下方法进行测试:
1:根据您是始终首先访问电影年份,还是通过任何其他属性访问电影,请使用列表而不是具有年份属性的dicts作为电影的一部分:
输出代码如下:
2:为了维护您的按年索引,数据结构将是一个列表的dict,如下所示:
输出代码变成:
一个小提示,我使用dict.get而不是切片,因为如果一个电影实体缺少一个属性,或者在第二种情况下,如果年份没有电影,这将返回保险箱提供的默认值,而不是崩溃-这也减少了dict代码中“if thing”的数量。如果你100%确定密钥存在,你可以切片,但要注意!请参阅https://docs.python.org/3/library/stdtypes.html#dict以获取有关此的详细信息
干杯
因为键是年,是整数,所以我们需要转换成字符串。所以我在最后一行使用str()进行了转换
相关问题 更多 >
编程相关推荐