首页 > 解决方案 > 查找哪些列表具有大量列表的相同元素

问题描述

我有一个列表字典(我也可以将它们设置为集合)

mydict = {key1: [s11, s12, ...],
          key2: [s21, s22, ...],
          keyN: [sN1, sN2, ...]}

其中 s* 是字符串。我想确定哪些键具有等效列表。我了解如何对两个列表(==)或集合(交集)进行成对比较,但我需要收集所有具有匹配列表的键。例如:

common1 = [key1, key97]         # mydict[key1]==mydict[key97]
common2 = [key3, key42, key51]  # these keys from mydict have equivalent lists

在 Python 中有什么有效的方法来做到这一点?

标签: pythonlistset

解决方案


result = {} 
for k,v in mydict.items():
    result.setdefault(tuple(v), []).append(k)

commons = result.values()

推荐阅读