Python数据处理:如何将CODE分组匹配到对应AA条目?
解决方案
我们可以通过遍历数据集,跟踪每个AA条目并关联其后续的CODE块来实现需求。核心逻辑是:识别AA的起始块并记录当前编号,遇到CODE块时收集所有CODE值,当遇到下一个AA块时,将收集到的CODE绑定到上一个AA,再处理新的AA。
实现代码
thelist = [[ [['AA', '24', '', None]], [['AA', 'Title', 'A/A agr'], ['48079687', 'Pers', '5', '']], [['AA', 'Syg.', 'Cro'], ['1', 'YES', 'Animal', 'Ksiriki']], [['CODE'], ['NB-1', 's'], ['NB-17', '']], [['AA', '26', '', None]], [['AA', 'Title', 'A/A agr'], ['56779687', 'Pers', '1', '']], [['AA', 'Syg.', 'Cro'], ['1', 'NO', 'Cotton', 'Fid']], [['CODE'], ['NB-11', 'g']], [['AA', '27', '', None]], [['AA', 'Title', 'A/A agr'], ['34579687', 'Pers', '1', '']], [['AA', 'Syg.', 'Cro']], [['AA', '29', '', 'Someth']], [['AA', 'Title', 'A/A agr'], ['12079687', 'Pers', '5', '']], [['AA', 'Syg.', 'Cro'], ['1', 'NO', 'BAMB', 'ST']]]] # 展开外层嵌套列表,简化遍历 data = thelist[0] aa_code_map = {} current_aa = None code_collector = [] for item in data: # 识别AA起始块(第一个子列表以AA开头且第二个元素为数字编号) if item[0][0] == 'AA' and len(item[0]) >=2 and item[0][1].isdigit(): # 将之前收集的CODE绑定到上一个AA if current_aa is not None and code_collector: aa_code_map[current_aa] = code_collector code_collector = [] # 记录当前AA编号并初始化CODE为None current_aa = item[0][1] aa_code_map[current_aa] = None # 识别CODE块并收集CODE值 elif item[0][0] == 'CODE': code_collector = [code_item[0] for code_item in item[1:]] # 处理末尾可能剩余的未绑定CODE if current_aa is not None and code_collector: aa_code_map[current_aa] = code_collector # 输出最终对应关系 for aa, codes in aa_code_map.items(): print(f"AA{aa}对应CODE: {codes}")
输出结果
AA24对应CODE: ['NB-1', 'NB-17'] AA26对应CODE: ['NB-11'] AA27对应CODE: None AA29对应CODE: None
逻辑说明
- 先展开外层嵌套列表,避免多层嵌套带来的遍历复杂度;
- 用
current_aa跟踪当前处理的AA编号,code_collector临时存储当前AA对应的CODE值; - 遇到新的AA块时,先完成上一个AA与CODE的绑定,再初始化新AA的CODE为None;
- CODE块处理时,提取每个子列表的第一个元素作为有效CODE值,统一收集为列表;
- 最后检查并处理数据集末尾可能存在的未绑定CODE块,保证逻辑完整性。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

