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

如何清理元组列表中的排列重复项,保留唯一组合

解决元组列表的无序对去重问题

嘿,这个问题本质上是要对前两个元素的无序对去重对吧?毕竟你的所有元组第三个元素都是40,所以只要前两个元素是彼此的排列,就视为同一项。下面给你两种实用解法,按需选择:

方法1:快速去重(不保证原顺序)

这种方法利用集合的自动去重特性,先把每个元组“标准化”(前两个元素排序),再转成集合去重,最后转回列表。优点是代码简洁、速度快,缺点是集合会打乱原列表的顺序:

# 标准化每个元组:前两个元素排序,第三个元素保持不变
normalized_tuples = [tuple(sorted(t[:2])) + (t[2],) for t in frequencies]
# 利用集合去重,再转回列表
unique_frequencies = list(set(normalized_tuples))

方法2:保留原列表中首次出现的元素(维持顺序)

如果需要保留原列表里第一次出现的那个元组(比如原列表先出现(20,60,40)就保留它,而非(60,20,40)),可以用一个集合记录已经处理过的无序对,遍历原列表时只添加未出现过的项:

seen_pairs = set()
unique_frequencies = []

for item in frequencies:
    # 生成排序后的前两个元素作为标识(因为无序对排序后是唯一的)
    pair_key = tuple(sorted(item[:2]))
    if pair_key not in seen_pairs:
        seen_pairs.add(pair_key)
        unique_frequencies.append(item)

补充说明

因为你的所有元组第三个元素都是40,所以我们只需要用前两个元素的排序结果作为去重的标识。如果以后第三个元素可能变化,只需要把第三个元素也加入到pair_key里即可,比如:

pair_key = tuple(sorted(item[:2])) + (item[2],)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:18:06