元组之间的差异(全部或全部)

时间:2016-07-10 18:49:20

标签: python set tuples

我有两套如下:

house_1 = {('Gale', '29'), ('Horowitz', '65'), ('Galey', '24')}
house_2 = {('Gale', '20'), ('Horowitz', '65'), ('Gale', '29')}

每组中的每个元组都包含代表一个人的属性。我需要找到house_1house_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)

1 个答案:

答案 0 :(得分:1)

您可以计算结果中名称的出现次数,并仅打印与计数为1的名称对应的元组:

d1
相关问题