Python实现按元组第二个元素分组并拼接第一个元素
按元组第二个元素分组并拼接第一个元素的实现方法
原始输入列表:
a = [('name', 'color'),('fruit', 'color'),('thing', 'type'),('sport', 'type')]
期望输出:
[('name fruit', 'color'),('thing sport', 'type')]
方法一:使用collections.defaultdict(推荐)
借助defaultdict可以更简洁地完成分组操作:
from collections import defaultdict a = [('name', 'color'),('fruit', 'color'),('thing', 'type'),('sport', 'type')] # 初始化分组字典,默认值为列表 grouped = defaultdict(list) for item, category in a: grouped[category].append(item) # 拼接每组元素并生成结果列表 result = [(' '.join(items), category) for category, items in grouped.items()] print(result)
方法二:使用普通字典实现
如果不想导入额外模块,用基础字典也能实现:
a = [('name', 'color'),('fruit', 'color'),('thing', 'type'),('sport', 'type')] grouped = {} for item, category in a: # 若分类不存在则创建空列表 if category not in grouped: grouped[category] = [] grouped[category].append(item) # 生成结果 result = [(' '.join(items), category) for category, items in grouped.items()] print(result)
代码说明
- 第一步都是按元组第二个元素(分类)分组,把同分类的第一个元素收集到列表中
- 第二步通过
' '.join(items)把同组的元素用空格拼接成字符串,再和分类组成新元组,最终整理成目标格式的列表
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

