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

Python字典格式转换:字典推导式仅输出单个元素的问题排查

解决字典转换后部门仅显示单个姓名的问题

问题分析

你当前的代码存在两个核心问题:

  1. 字典推导式中,同一部门的后续条目会覆盖之前的列表——因为字典的键具有唯一性,每次遇到相同部门时,都会用当前姓名的新列表替换掉之前的列表,最终每个部门仅保留最后一个遍历到的姓名。
  2. 原字典中存在重复键'Margo',后面的'Margo': 'HR'会覆盖前面的'Margo': 'IT',所以实际原字典里Margo的部门是HR。

正确的字典推导式实现

要实现{department: [name]}的格式,需先获取所有唯一部门,再为每个部门收集对应姓名:

orig_dict = {'Tom': 'HR', 'Ted': 'IT', 'Ken': 
             'Marketing', 'Jason': 'Marketing', 'Jesica': 'IT', 'Margo': 'IT', 'Margo': 'HR'}

# 生成目标格式的字典
new_dict = {dept: [name for name, department in orig_dict.items() if department == dept] 
            for dept in set(orig_dict.values())}

# 获取IT部门的姓名列表并打印
it_names = new_dict['IT']
print(it_names)  # 输出: ['Ted', 'Jesica']

代码说明

  • set(orig_dict.values()):提取原字典中所有不重复的部门名称,确保每个部门只被处理一次。
  • 内层列表推导式:遍历原字典的键值对,筛选出属于当前部门的所有姓名,组成完整的姓名列表。
  • 外层字典推导式:将每个部门作为键,对应的姓名列表作为值,构建出符合要求的字典。

内容的提问来源于stack exchange,提问作者Ramūnas B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:17