Digamos que tengo dos 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')}
Ahora, lo que quiero hacer es encontrar la diferencia establecida b \ apero ignorando el último elemento de cada tupla. Entonces es como hacer algo como esto:
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')}
Rendimiento esperado:
b \ a = {('1', '2', '6', 'b')}
¿Hay alguna forma obvia / pitónica de lograr esto sin tener que iterar manualmente sobre cada conjunto y compararlo tuple[:3]?
sety sobrescribir la operación de diferencia. No conozco ninguna solución lista para usar y dudo que exista.
aa = { t[:3] for t in a }
tupley anulación del operador de diferencia