I haben zwei Sätze wie folgt:Unterschied zwischen Tupeln (alles oder nichts)
house_1 = {('Gale', '29'), ('Horowitz', '65'), ('Galey', '24')}
house_2 = {('Gale', '20'), ('Horowitz', '65'), ('Gale', '29')}
Jedes Tupel in jedem Satz enthält Attribute, die eine Person darstellen. Ich muss einen speziellen Fall der symmetrischen Set-Differenz zwischen house_1
und house_2
finden: die Differenz muss nur bestätigt werden, wenn alle Elemente der Tupel nicht übereinstimmen und keiner von ihnen.
Aus den oben genannten Mengen, house_1^house_2
ergibt:
{('Gale', '20'), ('Galey', '24')}
was ausgezeichnet ist. Doch in den folgenden Sätzen:
house_1 = {('Gale', '24')}
house_2 = {('Gale', '29')}
house_1^house_2
noch tun ergibt:
{('Gale', '24'), ('Gale', '29')}
Das ist nicht das, was ich will. Ich brauche den Satzunterschied nur dann auszugeben, wenn beide Elemente in den Tupeln nicht übereinstimmen. In diesem Fall stimmt Gale überein, daher sollten diese beiden Tupel nicht in der Ausgabe enthalten sein.
Alle Einblicke werden sehr geschätzt.
LÖSUNG:
schrieb ich die folgende Funktion dieses Problem zu lösen:
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)
Ihre Operation ist unterspezifiziert. Sie scheinen eine Art implizite Bijektion anzunehmen, bei der jedes Element eines Satzes mit einem bestimmten Element des anderen Satzes übereinstimmt. Warum ist '('Gale', '20')' in der symmetrischen Differenz enthalten, wenn es in der ersten Menge mit '('Gale', '29')' verglichen werden konnte? – user2357112
@ user2357112 Ich folge deinem letzten Satz nicht. Kannst du es ausarbeiten? – lostsoul29
Sie sollten Verständnis verwenden. Aber ich denke, dass du mit Diktaten gehen solltest, nicht mit Sätzen. –