Python列表元素分组:按#分割前两段相同规则分组
解决方案:按前缀分组合并列表
我来帮你实现这个需求,思路很清晰——用字典来按元素的前缀分组,再根据组内元素数量生成最终列表,直接上代码和解释:
完整代码实现
list_1 = ['PERSONNE#FAVE#12','PERSONNE#DATE#12','PERSONNE#KIAL#12'] list_2 = ['PERSONNE#FAVE#11','PERSONNE#DATE#10'] # 合并两个输入列表 sortie_list = list_1 + list_2 # 用字典按前缀分组:键为分割后的前两段,值为对应元素的列表 group_dict = {} for item in sortie_list: # 提取元素的前两段作为分组键 prefix_key = '#'.join(item.split('#')[:2]) # 将元素添加到对应分组中 if prefix_key not in group_dict: group_dict[prefix_key] = [] group_dict[prefix_key].append(item) # 生成最终的结果列表 out_list = [] for group in group_dict.values(): if len(group) == 2: # 有匹配项的组,直接作为子列表加入 out_list.append(group) else: # 无匹配项的元素,直接加入结果列表 out_list.append(group[0]) # 打印验证结果 print(out_list)
代码运行结果
运行上述代码后,会输出你预期的结果:
[['PERSONNE#FAVE#12', 'PERSONNE#FAVE#11'], ['PERSONNE#DATE#12', 'PERSONNE#DATE#10'], 'PERSONNE#KIAL#12']
步骤解释
- 合并列表:先把
list_1和list_2合并成sortie_list,这是后续处理的基础。 - 按前缀分组:遍历每个元素,用
split('#')分割后取前两段,再用#拼接成分组键,把元素归类到对应键的列表中——这样所有前缀相同的元素会被分到同一组。 - 生成结果列表:遍历分组字典的每个值,如果组内有2个元素(说明两个列表里都有对应前缀的元素),就把这个组作为子列表加入
out_list;如果只有1个元素(说明没有匹配项),就直接把这个元素加入out_list。
内容的提问来源于stack exchange,提问作者blackcat
相关产品推荐
相关产品推荐

