Nehmen wir an, ich habe zwei set()
s:
a = {('1', '2', '3', 'a'), ('1', '2', '4', 'a'), ('1', '2', '5', 'b')}
b = {('1', '2', '3', 'b'), ('1', '2', '4', 'b'), ('1', '2', '6', 'b')}
Was ich jetzt tun möchte, ist, den eingestellten Unterschied zu finden, b \ a
aber das letzte Element aus jedem Tupel zu ignorieren. Es ist also so, als würde man so etwas machen:
a = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '5')}
b = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '6')}
In[1]: b - a
Out[1]: {('1', '2', '6')}
Erwartete Ausgabe:
b \ a = {('1', '2', '6', 'b')}
Gibt es eine offensichtliche / pythonische Möglichkeit, dies zu erreichen, ohne jeden Satz manuell durchlaufen und mit jedem vergleichen zu müssen tuple[:3]
?
set
und überschreiben Sie die Differenzoperation. Es gibt keine sofort einsatzbereite Lösung, die mir bekannt ist, und ich bezweifle, dass es eine gibt.
aa = { t[:3] for t in a }
tuple
und überschreiben Sie den Differenzoperator