Python列表字典合并:如何高效合并列表中相同键值字典的端口信息?

python列表字典合并:如何高效合并列表中相同键值字典的端口信息?

高效合并列表中相同键值字典

本文介绍如何高效合并Python列表中具有相同键的字典,特别是针对合并端口信息的情况。

问题描述:

给定一个包含多个字典的列表,每个字典都包含一个“sw”键和一个“port”键。目标是将具有相同“sw”值的字典合并,并将它们的“port”值合并成一个列表。

示例:

立即学习“Python免费学习笔记(深入)”;

假设输入列表如下:

input_list = [{'sw': '44', 'port': 1}, {'sw': '45', 'port': 21}, {'sw': '44', 'port': 2}, {'sw': '45', 'port': 22}, {'sw': '46', 'port': 2}]

期望的输出结果为:

output_list = [{'sw': '44', 'port': [1, 2]}, {'sw': '45', 'port': [21, 22]}, {'sw': '46', 'port': [2]}]

解决方案:

以下代码提供了一种高效的解决方案:

def merge_dicts(input_list):    merged_dict = {}    for item in input_list:        sw = item['sw']        port = item['port']        if sw not in merged_dict:            merged_dict[sw] = []        merged_dict[sw].append(port)    return [{'sw': sw, 'port': ports} for sw, ports in merged_dict.items()]input_list = [{'sw': '44', 'port': 1}, {'sw': '45', 'port': 21}, {'sw': '44', 'port': 2}, {'sw': '45', 'port': 22}, {'sw': '46', 'port': 2}]output_list = merge_dicts(input_list)print(output_list) # Output: [{'sw': '44', 'port': [1, 2]}, {'sw': '45', 'port': [21, 22]}, {'sw': '46', 'port': [2]}]

该函数首先创建一个空字典merged_dict用于存储合并后的结果。然后,它遍历输入列表,将每个字典的“sw”值作为键,将“port”值添加到对应的列表中。最后,它将merged_dict转换成期望的列表格式并返回。

扩展:支持任意键合并

上述方法可以扩展到支持根据任意键进行合并:

def merge_dicts_general(input_list, key):    merged_dict = {}    for item in input_list:        k = item[key]        if k not in merged_dict:            merged_dict[k] = []        merged_dict[k].append(item)    return list(merged_dict.values())input_list = [{'sw': '44', 'port': 1, 'vlan':10}, {'sw': '45', 'port': 21, 'vlan':20}, {'sw': '44', 'port': 2, 'vlan':10}]output_list = merge_dicts_general(input_list, 'sw')print(output_list)

这个通用函数接受一个额外的参数key,指定用于合并字典的键。 它将所有其他键值对都保留在合并后的字典中。

这些方法提供了一种清晰、高效的方式来合并列表中具有相同键的字典,并能轻松扩展到更通用的场景。

以上就是Python列表字典合并:如何高效合并列表中相同键值字典的端口信息?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1356867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 20:12:14
下一篇 2025年12月13日 20:12:25

相关推荐

发表回复

登录后才能评论
关注微信