You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并元组列表中重复键?将对应值转为列表形式

解决方法

这里有几种实用的Python实现方式,按需选择即可:

方法一:普通字典手动处理

适合基础场景,无需额外导入模块:

original_list = [('1', 'a'), ('2', 'b'), ('3', 'c'), ('3', 'd'), ('4', 'e'), ('4', 'f'), ('5', 'g')]
result_dict = {}

for num, char in original_list:
    if num not in result_dict:
        result_dict[num] = []
    result_dict[num].append(char)

# 转换为目标格式的列表
result_list = list(result_dict.items())
print(result_list)
# 输出: [('1', ['a']), ('2', ['b']), ('3', ['c', 'd']), ('4', ['e', 'f']), ('5', ['g'])]

方法二:使用collections.defaultdict

借助标准库简化代码,不用手动判断键是否存在:

from collections import defaultdict

original_list = [('1', 'a'), ('2', 'b'), ('3', 'c'), ('3', 'd'), ('4', 'e'), ('4', 'f'), ('5', 'g')]
result_dict = defaultdict(list)

for num, char in original_list:
    result_dict[num].append(char)

result_list = list(result_dict.items())
print(result_list)

方法三:使用itertools.groupby

如果原列表中相同数字的元组是连续的(你的例子刚好满足),可以用这个方法:

from itertools import groupby

original_list = [('1', 'a'), ('2', 'b'), ('3', 'c'), ('3', 'd'), ('4', 'e'), ('4', 'f'), ('5', 'g')]
# 按元组第一个元素分组,提取对应字母组成列表
result_list = [(key, [item[1] for item in group]) for key, group in groupby(original_list, key=lambda x: x[0])]
print(result_list)

注意:如果原列表中相同数字的元组不是连续的,使用groupby前需要先对原列表按第一个元素排序,比如:sorted_list = sorted(original_list, key=lambda x: x[0]),再用groupby处理。

内容的提问来源于stack exchange,提问作者Juuso Uu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:13:13