【发布时间】:2018-04-14 02:34:37
【问题描述】:
我在从组合字典和列表中提取时遇到问题。我了解如何分别从每个中提取钥匙,但我需要将它们组合起来并从两者中拉出钥匙。以下是列出年份的字典示例。每一年都有一个与之相关的头衔和导演。
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 艺术家米歇尔·哈扎那维修斯 帮助,泰特·泰勒
我编写了以下代码。
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,但对我所寻求的信息没有任何帮助。谁能指出我正确的方向?我是不是把字典写错了?或者我只是没有使用正确的方式来打印信息。谢谢
【问题讨论】:
-
类似
if year in movie_collection: print(movie_collection[year]['Title'], movie_collection[year]['Director'])。您应该注意,没有两个movie_collection条目可以共享同一年(键)。相反,最后一个将覆盖所有以前的条目。 -
感谢 Patrick 的快速回复。我已经摆弄了您建议的代码,它运行良好,除了关于“没有两个 movie_collection 条目可以共享同一年(键)”的部分。实际上我什至没有想到这一点,因为说明说要按年份列出并将Title和Director合并到一个列表中。关于如何重新编码以仍然遵循年份输入格式并将“标题和导演”保留为列表的任何建议?
标签: python list dictionary