如何从等长子列表组成的列表中提取符合出现顺序优先级的公共元素
共有元素提取与按出现优先级排序实现方案
实现逻辑
- 第一步:筛选所有子列表的共有元素:通过集合求交集的方式,快速得到在所有子列表中都出现的元素。
- 第二步:计算每个共有元素的排序权重:统计该元素在每个子列表中对应的索引值之和,索引和越小代表该元素在多数子列表中出现的位置更早,排序优先级越高。
- 第三步:按照权重从小到大对共有元素排序,输出最终结果。
Python 实现代码
def sorted_common_elements(lists): # 筛选所有子列表的共有元素 common_elements = set(lists[0]) for lst in lists[1:]: common_elements.intersection_update(lst) # 定义排序规则:按元素在所有子列表的索引和升序排列 def sort_key(item): total_index = 0 for lst in lists: total_index += lst.index(item) return total_index return sorted(common_elements, key=sort_key)
示例验证
输入测试用例:[['a','e','d','c','f'], ['e','g','a','d','c'], ['c','a','h','e','j']]
调用代码:
test_input = [['a','e','d','c','f'], ['e','g','a','d','c'], ['c','a','h','e','j']] print(sorted_common_elements(test_input))
输出结果:['a', 'e', 'c']
完全符合题目要求的输出结果。
内容的提问来源于stack exchange,提问作者Pritam Deka
相关产品推荐
相关产品推荐

