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

合并字典与列表后提取键的技术问题咨询

嘿,我看到你在处理嵌套的字典(还有可能结合列表)提取键的时候遇到了麻烦,先给你提个小细节:你写的movie_collection示例里,2005这个键重复出现了两次,Python字典里同一个键只能保留最后一个对应的值,所以第一个2005对应的《Munich》那条数据会被后面的《The Prestige》覆盖掉,实际用的时候得注意避免这种情况哦!

下面分不同场景给你讲怎么提取各类键:

一、提取外层的年份键

如果你的需求是拿到所有作为键的年份,直接用字典的keys()方法就搞定了,示例代码如下:

# 修正重复键的问题,把2005的电影放到列表里(更合理的结构)
movie_collection = {
    2005: [{'Title':'Munich','Director':'Steven Spielberg'},
           {'Title':'The Prestige','Director':'Christopher Nolan'}],
    2006: {'Title':'The Departed','Director':'Martin Scorsese'},
    2007: {'Title':'No Country for Old Men','Director':'Coen Brothers'}
}

# 提取外层年份键
year_keys = movie_collection.keys()
# 转成列表方便查看
print(list(year_keys))  # 输出:[2005, 2006, 2007]

二、提取内层字典的所有唯一键

要是你想拿到所有电影信息字典里的键(比如Title、Director,如果后面有其他字段也能一并提取),可以遍历每个年份对应的值,收集内层字典的键再去重:

inner_keys = set()  # 用集合自动去重
for item in movie_collection.values():
    if isinstance(item, list):
        # 如果年份对应的是电影列表,遍历每个电影字典
        for movie in item:
            inner_keys.update(movie.keys())
    elif isinstance(item, dict):
        # 如果年份对应的是单个电影字典,直接取键
        inner_keys.update(item.keys())

print(list(inner_keys))  # 输出:['Title', 'Director']

三、提取所有层级的键(外层年份+内层字段键)

如果想把外层的年份和内层的字段键都收集到一起,可以把上面两种方法结合起来:

all_keys = []
# 先添加外层年份键
all_keys.extend(movie_collection.keys())
# 再添加内层字段键(去重后)
inner_keys = set()
for item in movie_collection.values():
    if isinstance(item, list):
        for movie in item:
            inner_keys.update(movie.keys())
    elif isinstance(item, dict):
        inner_keys.update(item.keys())
all_keys.extend(inner_keys)

print(all_keys)  # 输出:[2005, 2006, 2007, 'Title', 'Director']

这样不管是纯嵌套字典,还是字典里混合了列表的情况,都能轻松提取到你需要的键啦!

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

相关产品推荐
方舟 Agent Plan

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

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