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

Python列表处理需求:移除重复元组后判断剩余列表是否为空

问题:处理元组列表并返回指定布尔值

我有一个包含一个或多个元组的列表,示例如下:

l = [('val_a', 100), ('val_b', 200), ('val_a', 100), ('val_b', 200)]

需要实现的功能:

  • 移除列表中所有出现次数超过一次的元组
  • 处理后若剩余列表为空,返回True;否则返回False
  • 列表中元组顺序随机,无需保留原列表结构

示例说明

# 示例001:返回True
l = [('val_a', 100), ('val_b', 200), ('val_a', 100), ('val_b', 200)]

# 示例002:返回False
l = [('val_a', 100), ('val_b', 200), ('val_a', 100), ('val_c', 300)]

# 示例003:返回True
l = [('val_a', 100), ('val_a', 100)]

# 示例004:返回False
l = [('val_a', 100)]

解决方案

可以利用collections.Counter统计每个元组的出现次数,再筛选出仅出现一次的元组,最后判断筛选结果是否为空。代码实现如下:

from collections import Counter

def process_tuple_list(lst):
    tuple_counts = Counter(lst)
    # 筛选出只出现一次的元组
    unique_items = [item for item in lst if tuple_counts[item] == 1]
    # 判断筛选后的列表是否为空
    return len(unique_items) == 0

测试验证

分别代入示例测试:

# 测试示例001
l1 = [('val_a', 100), ('val_b', 200), ('val_a', 100), ('val_b', 200)]
print(process_tuple_list(l1))  # 输出: True

# 测试示例002
l2 = [('val_a', 100), ('val_b', 200), ('val_a', 100), ('val_c', 300)]
print(process_tuple_list(l2))  # 输出: False

# 测试示例003
l3 = [('val_a', 100), ('val_a', 100)]
print(process_tuple_list(l3))  # 输出: True

# 测试示例004
l4 = [('val_a', 100)]
print(process_tuple_list(l4))  # 输出: False

思路说明

  1. 使用Counter统计列表中每个元组的出现次数,高效完成频次统计
  2. 通过列表推导式筛选出所有出现次数为1的元组
  3. 检查筛选后的列表长度是否为0,返回对应的布尔值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:33:28