Python如何拆分嵌套列表中UDP/TCP组合值并转换协议名大小写
问题分析
现有代码存在两处核心问题:
- 处理
UDP/TCP组合值时,仅对同一列表位置重复赋值,最终只会保留最后一次写入的tcp,无法生成两个独立的列表项 - 直接遍历原列表并修改列表结构容易引发遍历偏移异常,更稳妥的方式是新建列表存储处理后的数据
实现代码
lst = [['IP Address 1','TCP'], ['IP Address 2 ','UDP'],['IP Address 3','UDP/TCP']] res = [] for ip, proto in lst: # 拆分协议字段后逐个转小写,生成新条目 for single_proto in proto.split('/'): res.append([ip, single_proto.lower()]) print(res)
逻辑说明
- 初始化空列表
res存储最终处理结果,避免修改原列表引发异常 - 对每一项的协议字段统一用
/拆分,单个协议也会被拆为只有一个元素的列表,不需要单独写分支判断协议类型 - 拆分后的每个协议字符串统一转小写后,和对应IP拼接为新的子项加入结果列表
- 该逻辑适配任意用
/拼接的多协议组合,后续新增协议类型也无需修改判断分支
运行输出
运行后输出完全匹配预期效果:[['IP Address 1', 'tcp'], ['IP Address 2 ', 'udp'], ['IP Address 3', 'udp'], ['IP Address 3', 'tcp']]
内容的提问来源于stack exchange,提问作者Deyaa
相关产品推荐
相关产品推荐

