如何查找存在于列表列表中60%子列表内的元素?
找出出现在指定比例子列表中的元素
问题描述
给定列表:
X = [['a','b','c'],['a','d','e'],['a','x','f'],['g','h','j'],['y','u','i']]
需要获取出现在60%及以上子列表中的元素,预期结果为['a']('a'出现在5个子列表中的3个,占比60%)。
实现代码
X = [['a','b','c'],['a','d','e'],['a','x','f'],['g','h','j'],['y','u','i']] # 统计每个元素出现的子列表数量 element_count = {} for sublist in X: # 转成集合避免同一子列表内重复元素重复计数 unique_elements = set(sublist) for elem in unique_elements: element_count[elem] = element_count.get(elem, 0) + 1 # 计算阈值:总子列表数 × 目标比例 total_sublists = len(X) threshold = total_sublists * 0.6 # 筛选符合条件的元素 result = [elem for elem, count in element_count.items() if count >= threshold] print(result) # 输出: ['a']
代码说明
- 统计元素出现次数:遍历每个子列表,先转成集合去重,确保同一个子列表里的重复元素只被计数一次,再用字典累加每个元素出现的子列表数量。
- 计算阈值:用子列表总数乘以60%,得到需要达到的最小出现次数(这里是3)。
- 筛选结果:遍历统计字典,把出现次数≥阈值的元素收集起来,得到最终结果。
内容的提问来源于stack exchange,提问作者MK2121
相关产品推荐
相关产品推荐

