Python中如何精简元组集合?移除首元素重复的元组
简便实现方法
给定目标集合,我们可以通过统计首元素出现次数再筛选的方式快速实现需求:
方法一:使用collections.Counter(简洁高效)
from collections import Counter s = {(1, 2), (3, 4), (1, 3), ('v', 'n'), ('v', 'k')} # 统计所有元组首元素的出现频次 first_element_counts = Counter(tuple_item[0] for tuple_item in s) # 筛选出首元素仅出现一次的元组 result = {tuple_item for tuple_item in s if first_element_counts[tuple_item[0]] == 1} print(result) # 输出: {(3, 4)}
方法二:手动用字典统计(无需额外导入)
如果不想引入collections模块,也可以用普通字典完成统计:
s = {(1, 2), (3, 4), (1, 3), ('v', 'n'), ('v', 'k')} count_dict = {} # 遍历集合统计首元素次数 for t in s: key = t[0] count_dict[key] = count_dict.get(key, 0) + 1 # 筛选符合条件的元组 result = {t for t in s if count_dict[t[0]] == 1} print(result) # 输出: {(3, 4)}
核心逻辑:先遍历集合记录每个首元素的出现次数,再重新遍历集合,只保留那些首元素出现次数为1的元组,这样就能自动移除所有存在重复首元素的元组对。
内容的提问来源于stack exchange,提问作者Paul Jurczak
相关产品推荐
相关产品推荐

