如何基于子列表中的'INS'元素对嵌套列表进行分组
按'INS'子列表分组嵌套列表的实现方法
实现思路
遍历原lines列表,每当遇到以'INS'作为第一个元素的子列表时,创建新分组并加入该子列表;后续非INS开头的子列表直接加入当前分组,直到下一个INS子列表出现时,将当前分组存入结果并新建分组,循环结束后再把最后一个分组加入结果即可。
Python代码实现
lines = [ ['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'], ['REF', '0F', '708066255'], ['REF', '1L', '708066255'], ['DTP', '303', 'D8', '20240901'], ['DTP', '356', 'D8', '20240801'], ['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'], ['N3', '2670 SO A W GRIMES BO', '#6102'], ['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'], ['DMG', 'D8', '19931219', 'F', '', 'H'], ['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'], ['REF', '0F', '811229070'], ['REF', '1L', '811229070'], ['DTP', '303', 'D8', '20240901'], ['DTP', '356', 'D8', '20240201'], ['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'], ['PER', 'IP', '', 'HP', '5129233526'], ['N3', '154 TERRI TL'], ['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'], ['DMG', 'D8', '20040628', 'F', '', 'H'] ] result = [] current_group = [] for sublist in lines: if sublist[0] == 'INS': if current_group: result.append(current_group) current_group = [sublist] else: current_group.append(sublist) if current_group: result.append(current_group) # 打印验证结果 import pprint pprint.pprint(result)
输出结果
运行代码后,输出结构与预期完全一致:
[[['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'], ['REF', '0F', '708066255'], ['REF', '1L', '708066255'], ['DTP', '303', 'D8', '20240901'], ['DTP', '356', 'D8', '20240801'], ['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'], ['N3', '2670 SO A W GRIMES BO', '#6102'], ['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'], ['DMG', 'D8', '19931219', 'F', '', 'H']], [['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'], ['REF', '0F', '811229070'], ['REF', '1L', '811229070'], ['DTP', '303', 'D8', '20240901'], ['DTP', '356', 'D8', '20240201'], ['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'], ['PER', 'IP', '', 'HP', '5129233526'], ['N3', '154 TERRI TL'], ['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'], ['DMG', 'D8', '20040628', 'F', '', 'H']]]
内容的提问来源于stack exchange,提问作者Ben Smith
相关产品推荐
相关产品推荐

