首页 > 解决方案 > 如何从列表列表中找到共同元素以保持出现顺序?

问题描述

我有一个列表长度相同的列表。我需要从它们中找到共同的元素,并保持出现的顺序。例如:

假设列表列表是[['a','e','d','c','f']['e','g','a','d','c']['c','a','h','e','j']] 输出列表应该包含['a','e','c']优先级应该给予在大多数列表中较早出现的元素。在此示例中,“a”出现在较早的位置,然后是“e”,依此类推。如何进行此操作?

标签: pythonpython-3.xlist

解决方案


您可以先找到常见的项目然后对其进行排序

from collections import defaultdict
data = [['a','e','d','c','f'],['e','g','a','d','c'],['c','a','h','e','j']]

common = set(data[0])
for line in data:
    common = common.intersection(set(line))

res = defaultdict(int)
for line in data:
    for idx, item in enumerate(line):
        if item in common:
            res[item] += idx
[item[0] for item in sorted(res.items(), key=lambda x: x[1])]

输出:

['a', 'e', 'c']

推荐阅读