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

如何生成无重复姓名-团队组合的嵌套列表并保留顺序?

Python 列表去重:保留唯一姓名-团队组合的子列表

你的需求是过滤嵌套列表,只保留姓名+团队组合完全唯一的子列表(重复组合的所有条目都丢弃),同时维持原列表的顺序。直接用set()这类方法没法实现,因为它们只会去重保留一个条目,而不是删掉所有重复组合。下面是可行的解决方案:

步骤1:统计组合出现次数

先遍历原列表,用字典统计每个(姓名, 团队)组合的出现次数:

scores = [['Ali', 15, 'Zebra'], ['Mo', 20, 'Donkey'], ['Ali', 18, 'Zebra'], ['Liz', 20, 'Mouse']]

# 统计每个(姓名, 团队)组合的出现次数
combo_counts = {}
for name, _, team in scores:
    combo_key = (name, team)
    combo_counts[combo_key] = combo_counts.get(combo_key, 0) + 1

步骤2:过滤生成目标列表

再次遍历原列表,只保留那些组合次数为1的子列表:

new_scores = [item for item in scores if combo_counts[(item[0], item[2])] == 1]

验证结果

执行后打印new_scores,就能得到你要的结果:

print(new_scores)
# 输出: [['Mo', 20, 'Donkey'], ['Liz', 20, 'Mouse']]

这个方法的优势是:

  • 严格遵循需求:重复组合的所有条目都被丢弃
  • 完全保留原列表的顺序
  • 时间复杂度为O(n),效率较高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:44:53