【发布时间】: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 显然不应该在那里。
如何找到两个包含集合的列表的差异?
List 1:
[{0, 1, 3, 9}, {2, 5, 6}, {8, 4}]
List 2:
[{6, 7, 8, 9}]
结果应该是:
[{7}]
【问题讨论】:
创建两个集合并用列表中的值填充它们。那么想要的结果就是简单的减法。
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}
【讨论】:
听起来您可以将 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])]
【讨论】: