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

Python练习:对元组列表按首值分组提取有序字母列表

Python元组列表分组实现方案

实现思路:

  • 使用collections.defaultdict存储分组结果,天然支持同key追加元素,能保留字母的原始出现顺序
  • 遍历原始元组列表完成分组
  • 对分组结果按数字值升序排序,同时将数字转为字符串格式,生成最终要求的元组列表

完整实现代码

from collections import defaultdict

# 原始输入数据
raw_data = [(1, 'E'),
 (2, 'A'),
 (5, 'B'),
 (3, 'A'),
 (6, 'C'),
 (7, 'A'),
 (9, 'A'),
 (1, 'B'),
 (2, 'E'),
 (3, 'B'),
 (7, 'C'),
 (5, 'C'),
 (3, 'D'),
 (8, 'E'),
 (9, 'B'),
 (8, 'D'),
 (3, 'E'),
 (5, 'D'),
 (8, 'E'),
 (9, 'E'),
 (7, 'E'),
 (3, 'E'),
 (5, 'D'),
 (9, 'A'),
 (4, 'E'),
 (6, 'E'),
 (8, 'A'),
 (5, 'E'),
 (6, 'A'),
 (0, 'C'),
 (9, 'A'),
 (3, 'D'),
 (5, 'E'),
 (4, 'B'),
 (6, 'B'),
 (7, 'D'),
 (8, 'B'),
 (9, 'C'),
 (1, 'E'),
 (5, 'E')]

# 分组处理
group_dict = defaultdict(list)
for num, char in raw_data:
    group_dict[num].append(char)

# 排序并转换为要求的格式
result = [(str(num), char_list) for num, char_list in sorted(group_dict.items())]

# 打印验证结果
for item in result:
    print(item)

如果你不想额外导入模块,也可以用普通字典实现分组逻辑,效果完全一致:

group_dict = {}
for num, char in raw_data:
    if num not in group_dict:
        group_dict[num] = []
    group_dict[num].append(char)

运行输出

运行后得到的结果和预期完全匹配:

('0', ['C'])
('1', ['E', 'B', 'E'])
('2', ['A', 'E'])
('3', ['A', 'B', 'D', 'E', 'E', 'D'])
('4', ['E', 'B'])
('5', ['B', 'C', 'D', 'D', 'E', 'E', 'E'])
('6', ['C', 'E', 'A', 'B'])
('7', ['A', 'C', 'E', 'D'])
('8', ['E', 'D', 'E', 'A', 'B'])
('9', ['A', 'B', 'E', 'A', 'A', 'C'])

内容的提问来源于stack exchange,提问作者Luis Alejandro Vargas Ramos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:27:01