【问题标题】:Find difference when comparing lists of sets [closed]比较集合列表时发现差异[关闭]
【发布时间】:2015-09-24 14:17:14
【问题描述】:

如何找到两个包含集合的列表的差异?

List 1:
    [{0, 1, 3, 9}, {2, 5, 6}, {8, 4}]
List 2:
    [{6, 7, 8, 9}]

结果应该是:

[{7}]

【问题讨论】:

  • 100% 看不懂,但是如果在列表 1 中,为什么结果是 9?
  • 所以 9 显然不应该在那里。

标签: python list set compare


【解决方案1】:

创建两个集合并用列表中的值填充它们。那么想要的结果就是简单的减法。

l1 = [{0, 1, 3, 9}, {2, 5, 6}, {8, 4}]
l2 = [{6, 7, 8, 9}]

s1 = set()
for i in l1:
    s1.update(i)

s2 = set()
for i in l2:
    s2.update(i)

print(s2 - s1)
# {7}

【讨论】:

    【解决方案2】:

    听起来您可以将 list1 展平,然后找出不同之处:

    >>> l1 = [{0, 1, 3, 9}, {2, 5, 6}, {8, 4}]
    >>> l2 = [{6, 7, 8, 9}]
    >>> l3 = [x for y in l1 for x in y]
    >>> l3
    [0, 9, 3, 1, 2, 5, 6, 8, 4]
    >>> l4 = [set(i for i in l2[0] if i not in l3)]
    >>> l4
    [set([7])]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多