python - 如何从列表列表中找到共同元素以保持出现顺序?
问题描述
我有一个列表长度相同的列表。我需要从它们中找到共同的元素,并保持出现的顺序。例如:
假设列表列表是[['a','e','d','c','f']['e','g','a','d','c']['c','a','h','e','j']]
输出列表应该包含['a','e','c']
优先级应该给予在大多数列表中较早出现的元素。在此示例中,“a”出现在较早的位置,然后是“e”,依此类推。如何进行此操作?
解决方案
您可以先找到常见的项目然后对其进行排序
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']
推荐阅读
- angular - 如何在 Angular 6 中重构双重订阅
- azure-devops - 花费精力或时间来汇总项目类型层次结构
- python - Keras model.predict 检查输入时出错:预期 conv2d_input 有 4 维,但得到的数组形状为 (128, 56)
- ssl - 带有客户端证书的 HttpClient POST 请求
- c++ - 如何通过引用正确传递迭代器?
- python - SQLAlchemy - 自引用表错误
- php - 如何通过user_id登录离子3过滤json数据?
- sql - 如何重命名 SQL INNER JOIN 获得的列?
- shell - 如何拆分具有自定义后缀的文件?
- apache-kafka - 保留时间非常短的 Kafka 主题