我正在组织一个使用Python进行学术任务的电影片名单。提交截止日期已经过去;我只是想了解它如何为未来发挥作用。
以下是代码:
fun_1(n=6)//from main
fun_1(n=3)//since 6 > 0 {
fun_1(n=0){//now n is not greater than zero, so don't recurse
execute if n == 0, yes it is, so output Q
print ++x, x was A now after ++x, x would be 'B'
}
since n <> 0, don't output Q
print ++x, x was B, so print C which is after pre-incrementing x
}
since n <> 0, don't output Q
print ++x, x was C, so print D which is after pre-incrementing x
}
如果我选择只有一个条目的年份,则print语句可以正常工作。如果用户输入“2006”,则应显示两个标题,但我只获得2006年密钥的后一个值。我做错了什么?
答案 0 :(得分:1)
键必须是字典的唯一键。因此,如果向字典添加条目,它将覆盖使用相同密钥的任何条目。
如果你坚持使用年份作为关键(不知道你的作业是否出于某种奇怪的原因需要这样做),那么可以将条目放在像
这样的列表中{
2005: [('Munich', 'Steven Spielberg'), ('King Kong', 'Peter Jackson')],
...
}
但这需要一些其他技巧,例如使用setdefault()
或defaultdict
(或在添加新项目之前手动检查密钥是否已存在)。
请注意,在我的示例中,我使用了一个列表,列出了类似元素和元组的集合,用于不同元素的集合(title / director)。这可能是一个好习惯。
答案 1 :(得分:1)
您可以像这样重新组织字典:
movies = {
2005: [('Munich', 'Steven Spielberg')],
2006: [('The Prestige', 'Christopher Nolan'), ('The Departed', 'Martin Scorsese')],
2007: [('Into the Wild', 'Sean Penn')],
2008: [('The Dark Knight', 'Christopher Nolan')],
2009: [('Mary and Max', 'Adam Elliot')],
2010: [('The King\"s Speech', 'Tom Hooper')],
2011: [('The Artist', 'Michel Hazanavicius'), ('The Help', 'Tate Taylor')],
2012: [('Argo', 'Ben Affleck')],
2013: [('12 Years a Slave', 'Steve McQueen')],
2014: [('Birdman', 'Alejandro G. Inarritu')],
2015: [('Spotlight', 'Tom McCarthy')],
2016: [('The BFG', 'Steven Spielberg')]
}
电影是元组(title, director)
,年份条目是电影列表。
选择一年会为您提供电影列表
>>> print(movies[2006])
[('The Prestige', 'Christopher Nolan'), ('The Departed', 'Martin Scorsese')]
然后您可以通过遍历列表来提取标题或导演。
>>> print([movie[0] for movie in movies[2006]])
['The Prestige', 'The Departed']
>>> print([movie[1] for movie in movies[2006]])
['Christopher Nolan', 'Martin Scorsese']