python - 比较两个集合列表

标签 python list

例如,我有两个集合列表:

list1 = [{'a','b'}, {'c','d'}, {'a','b','c'}, {'c','f'}]
list2 = [{'c','d','e'}, {'e','f'}, {'a','b','d'}, {'c','f'}]

我需要输出一个索引列表,其中 list1[i] 和 list2[i] 不共享公共(public)元素。 (没有交集)

在这种情况下,{'a','b'}{'c','d','e'} 中没有公共(public)元素.

  1. {'c','d'}{'e','f'} 中没有公共(public)元素.
  2. {'a','b','c'}有共同元素'a''b'{'a','b','d'} .
  3. {'c','f'}有共同元素'c''f'{'c','f'} .

所以 list1[0]list1[1] list2[0] 中没有相同的元素和 list2[1]

它将返回索引列表:list = [0,1]

我的做法是:

for l1,l2 in zip(list1,list2):
    for i in l1:
        if i in l2:
            print(i)

这显然是不正确的。感谢您的帮助。

最佳答案

您可以枚举压缩列表并根据这对集合 is disjoint 是否过滤索引。 :

list1 = [{'a','b'}, {'c','d'}, {'a','b','c'}, {'c','f'}]
list2 = [{'c','d','e'}, {'e','f'}, {'a','b','d'}, {'c','f'}]

indices = [i for i, (a, b) in enumerate(zip(list1, list2)) if a.isdisjoint(b)]

# [0, 1]

关于python - 比较两个集合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70726564/

相关文章:

python - 如何使用 matplotlib 中设置的自定义数字来自定义条形图中的颜色?

java - 如何获取通用列表实例的特定项目

list - 使用 Elixir 中的 map 访问列表中的嵌套元素

java - 麻烦初始化 List<Object[]> 使用 Arrays.asList

java - 将列表的元素复制到二维数组

list - 在 JavaFX TableView 中显示数据库中的项目

python a,b = b,a 实现?它与 C++ 交换函数有何不同?

Python - 使用 SAML 2.0 登录站点

python - 你如何阻止 numpy 多线程?

python - 从 SQLAlchemy 填充 QTableView