Python合并3个含重复键字典并按公司字段分组输出的实现方法
Python字典按公司分组聚合实现
不需要引入第三方依赖,Python原生语法即可完成需求,以下是可直接运行的代码:
# 原始字典数据 NewDict1 = {'Name': 'John,Davies', 'Company': 'Google'} NewDict2 = {'Name': 'Boris,Barry', 'Company': 'Microsoft'} NewDict3 = {'Name': 'Humphrey,Smith', 'Company': 'Microsoft'} # 统一收纳所有待处理字典 all_records = [NewDict1, NewDict2, NewDict3] grouped = {} for record in all_records: company = record['Company'] # 替换姓名中的逗号为空格 fixed_name = record['Name'].replace(',', ' ') # 按公司分组 if company not in grouped: grouped[company] = [] grouped[company].append(fixed_name) # 按要求格式拼接结果 final_output = ' '.join([f"{comp} : {', '.join(name_list)}" for comp, name_list in grouped.items()]) print(final_output)
运行代码后输出结果完全匹配预期:
Google : John Davies Microsoft : Boris Barry, Humphrey Smith
如果想要简化分组时的键存在判断,可以使用标准库collections.defaultdict,代码更简洁:
from collections import defaultdict NewDict1 = {'Name': 'John,Davies', 'Company': 'Google'} NewDict2 = {'Name': 'Boris,Barry', 'Company': 'Microsoft'} NewDict3 = {'Name': 'Humphrey,Smith', 'Company': 'Microsoft'} all_records = [NewDict1, NewDict2, NewDict3] grouped = defaultdict(list) for record in all_records: grouped[record['Company']].append(record['Name'].replace(',', ' ')) final_output = ' '.join([f"{comp} : {', '.join(name_list)}" for comp, name_list in grouped.items()]) print(final_output)
后续如果新增同结构的字典数据,只需要把新字典追加到all_records列表中即可,不需要修改后续处理逻辑。
内容的提问来源于stack exchange,提问作者Ady
相关产品推荐
相关产品推荐

