如何按共同ID分组打印关联的字符串值?
解决方案
你可以通过字典分组的方式来实现这个需求,比嵌套循环更简洁高效:
步骤说明
- 用字典存储每个ID对应的颜色列表,键为清理掉前后空格的ID(避免因空格导致分组错误),值为颜色列表;
- 遍历原始数据,将每个颜色归类到对应ID的列表中;
- 最后将字典中的条目格式化为目标字符串,再拼接成最终结果。
代码实现
# 原始数据 data = [['108-002 ', 'BLACK'], ['108-002 ', 'WHITE'], ['108-002 ', 'RED'], ['108-002 ', 'GREEN'], ['110-003 ', 'GREEN'], ['110-003 ', 'RED'], ['110-004 ', 'RED'], ['110-004 ', 'BLACK'], ['110-004 ', 'PURPLE']] # 初始化字典用于分组 color_groups = {} for item in data: # 清理ID前后的空格,保证分组准确性 id_num = item[0].strip() color = item[1] # 若ID不在字典中则创建新列表,否则直接追加颜色 if id_num not in color_groups: color_groups[id_num] = [] color_groups[id_num].append(color) # 生成目标格式的字符串 result = "; ".join([f"{id} had {', '.join(colors)}" for id, colors in color_groups.items()]) print(result)
输出结果
108-002 had BLACK, WHITE, RED, GREEN; 110-003 had GREEN, RED; 110-004 had RED, BLACK, PURPLE
如果使用Python 3.9+,还可以用dict.setdefault()简化分组逻辑:
color_groups = {} for item in data: id_num = item[0].strip() color = item[1] # setdefault自动处理不存在的键,直接返回对应列表 color_groups.setdefault(id_num, []).append(color)
内容的提问来源于stack exchange,提问作者Kenjeet
相关产品推荐
相关产品推荐

