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

如何从Python元组列表中提取特定无重复元素生成新列表?

解决方法:从元组列表中提取唯一的(姓名,目标值)组合

嘿,这个需求很常见,给你几个简洁的实现方案,根据你的具体需求选就行:

方法1:用集合快速去重(最简单,不保证顺序)

如果不需要保留原列表中元素首次出现的顺序,直接用集合推导式就能搞定,集合会自动剔除重复的元组:

original_list = [(1, 2, 'Adam', 'M', '2', '12'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (2, 3, 'Adam', 'M', '2', '12'), (2, 3, 'Ewa', 'W', '2.0 (E)', '44')]
result = list({(item[2], item[5]) for item in original_list})
print(result)  # 输出类似 [('Adam', '12'), ('Ewa', '44')],顺序可能因Python版本略有不同

逻辑很简单:遍历原列表,从每个元组里提取第3个(索引2)和第6个(索引5)元素组成新元组,集合会自动过滤掉重复的组合,最后转成列表即可。

方法2:保持首次出现的顺序(Python 3.7+)

如果你需要保留原列表中每个组合第一次出现的顺序,可以用dict.fromkeys(),因为Python 3.7及以上的字典会维护插入顺序:

original_list = [(1, 2, 'Adam', 'M', '2', '12'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (2, 3, 'Adam', 'M', '2', '12'), (2, 3, 'Ewa', 'W', '2.0 (E)', '44')]
result = list(dict.fromkeys((item[2], item[5]) for item in original_list))
print(result)  # 输出 [('Adam', '12'), ('Ewa', '44')],顺序和原列表首次出现一致

dict.fromkeys()会把每个(姓名,目标值)元组作为字典的键(键是唯一的),自动跳过重复的键,最后转成列表就得到了有序的结果。

方法3:手动遍历去重(适合新手理解)

如果想更清晰地控制流程,用普通循环加集合记录已出现的组合也很直观:

original_list = [(1, 2, 'Adam', 'M', '2', '12'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (1, 2, 'Ewa', 'W', '2.0 (E)', '44'), (2, 3, 'Adam', 'M', '2', '12'), (2, 3, 'Ewa', 'W', '2.0 (E)', '44')]
seen = set()
result = []
for item in original_list:
    current_pair = (item[2], item[5])
    if current_pair not in seen:
        seen.add(current_pair)
        result.append(current_pair)
print(result)  # 输出 [('Adam', '12'), ('Ewa', '44')],顺序和原列表首次出现一致

这个方法用seen集合来跟踪已经添加过的组合,遍历原列表时只添加未出现过的组合,既保证去重又能控制顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:19