如何从两个元组列表按元素最大出现次数生成保留重复项的合并列表
实现方案
直接使用Python标准库collections.Counter就能快速实现,不需要手动写计数逻辑,也不会丢失重复元素的次数统计,具体实现如下:
代码示例
from collections import Counter a = [(468, 15), (336, 280), (200, 90), (180, 150), (180, 150), (180, 150)] b = [(200, 200), (200, 90), (200, 90), (180, 150), (180, 150)] # 分别统计两个列表中各元素的出现次数 count_a = Counter(a) count_b = Counter(b) combined = [] # 遍历两个列表的所有唯一元素 for item in count_a.keys() | count_b.keys(): # 取两个列表中该元素出现次数的最大值 max_count = max(count_a.get(item, 0), count_b.get(item, 0)) # 按最大次数将元素重复添加到结果列表 combined.extend([item] * max_count) # 如果需要和示例输出的顺序完全一致,可添加排序规则 combined.sort(key=lambda x: (-x[0], -x[1])) print(combined)
运行结果
[(468, 15), (336, 280), (200, 200), (200, 90), (200, 90), (180, 150), (180, 150), (180, 150)]
内容的提问来源于stack exchange,提问作者NPD
相关产品推荐
相关产品推荐

