我有两套如下:
house_1 = {('Gale', '29'), ('Horowitz', '65'), ('Galey', '24')}
house_2 = {('Gale', '20'), ('Horowitz', '65'), ('Gale', '29')}
每组中的每个元组都包含代表一个人的属性。我需要找到house_1
和house_2
之间对称集差异的特殊情况:只有当元组的所有元素都不一致时才必须确认差异,而不是任何一个元素。
对于上述集合,house_1 ^ house_2
产生:
{('Gale', '20'), ('Galey', '24')}
这很棒。但是,在以下几组中:
house_1 = {('Gale', '24')}
house_2 = {('Gale', '29')}
做house_1 ^ house_2
仍然会产生:
{('Gale', '24'), ('Gale', '29')}
这不是我想要的。我只需要在元组中的两个元素不匹配时输出设置差异。在这种情况下,Gale匹配,因此这些元组都不应该在输出中。
非常感谢任何见解。
SOLUTION:
我写了以下函数来解决这个问题:
for counter_H1, member_H1 in enumerate(house_1):
for counter_H2, member_H2 in enumerate(house_2):
if (member_H1[0] == member_H2[0]) and (member_H1[1] == member_H2[1]):
break
if (member_H1[0] != member_H2[0]) and (member_H1[1] != member_H2[1]) and (counter_H2 == len(house_2) - 1):
print(member_H1, member_H2)
答案 0 :(得分:1)
您可以计算结果中名称的出现次数,并仅打印与计数为1的名称对应的元组:
d1