Diciamo che ho due 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')}
Ora, quello che voglio fare è trovare la differenza impostata b \ ama ignorando l'ultimo elemento di ogni tupla. Quindi è proprio come fare qualcosa del genere:
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')}
Uscita prevista:
b \ a = {('1', '2', '6', 'b')}
Esiste un modo ovvio / pitonico per raggiungere questo obiettivo senza dover iterare manualmente su ogni set e verificare con ciascuno di essi tuple[:3]?
sete sovrascrivere l'operazione di differenza. Non esiste una soluzione pronta all'uso che conosco e dubito che esista.
aa = { t[:3] for t in a }
tuplee sovrascrive l'operatore differenza