Disons que j'ai deux 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')}
Maintenant, ce que je veux faire est de trouver la différence définie b \ a
mais en ignorant le dernier élément de chaque tuple. C'est comme faire quelque chose comme ça:
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')}
Production attendue:
b \ a = {('1', '2', '6', 'b')}
Existe-t-il un moyen évident / pythonique d'y parvenir sans avoir à parcourir manuellement chaque ensemble et à les comparer tuple[:3]
?
set
- classe et écraser l'opération de différence. Il n'y a pas de solution prête à l'emploi que je sache et je doute qu'une existe.
aa = { t[:3] for t in a }
tuple
- classe et remplacement de l'opérateur de différence