You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问题:如何打印字典中同一键对应的多个值?

解决字典中同一键对应多个值的打印问题

嘿,我来帮你搞定这个问题~首先得提个小细节:你现在写的字典里,2006这个年份被重复赋值了两次,而Python字典的键是唯一不可重复的,所以后面的《The Departed》会直接覆盖掉前面的《The Prestige》,运行代码时你会发现2006年只剩下《The Departed》那一条数据哦。

所以第一步,我们得先修正数据结构,把每个年份对应的所有电影都存成一个嵌套列表(里面用元组来存标题和导演会更清晰),调整后的代码如下:

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')]
}

(我把《The King's Speech》的引号改成了双引号包裹单引号,避免转义的麻烦~)

接下来分两种场景来说怎么打印同一键的多个值:

1. 打印指定年份的所有电影

如果你想单独打印某一年(比如2006年)的所有电影,可以先判断年份是否在字典里,再遍历对应的值列表,这样还能避免键不存在时的报错:

target_year = 2006
if target_year in movies:
    print(f"=== {target_year}年的电影 ===")
    for movie_title, director in movies[target_year]:
        print(f"- {movie_title} | 导演:{director}")

运行这段代码,就能清晰输出2006年的两部电影信息啦。

2. 遍历整个字典,打印所有年份的电影

如果想一次性输出所有年份的所有电影,就用items()方法遍历字典的键值对,按年份分组展示:

for year, film_list in movies.items():
    print(f"\n--- {year}年上映的电影 ---")
    for title, director in film_list:
        print(f"* {title}(导演:{director})")

这样就能把每一年的所有电影都整齐列出来。

额外小技巧:避免构建字典时键被覆盖

如果你是逐步添加电影数据,不想因为重复键导致数据丢失,可以用setdefault()方法安全添加:

movies = {}
# 添加单部电影
movies.setdefault(2005, []).append(('Munich', 'Steven Spielberg'))
# 给2006年添加第一部电影
movies.setdefault(2006, []).append(('The Prestige', 'Christopher Nolan'))
# 再给2006年添加第二部电影,不会覆盖之前的内容
movies.setdefault(2006, []).append(('The Departed', 'Martin Scorsese'))

setdefault()会先检查键是否存在,不存在就创建一个空列表作为值,之后我们再把新的电影信息append进去,这样就不会丢失数据啦。

内容的提问来源于stack exchange,提问作者Brian Cox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:48:39