Powiedzmy, że mam dwa 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')}
Teraz chcę znaleźć ustaloną różnicę, b \ a
ale ignorując ostatni element z każdej krotki. To tak, jakby zrobić coś takiego:
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')}
Oczekiwany wynik:
b \ a = {('1', '2', '6', 'b')}
Czy istnieje jakiś oczywisty / pytonowy sposób na osiągnięcie tego bez konieczności ręcznego iterowania każdego zestawu i sprawdzania każdego z nich tuple[:3]
?
set
i zastąpić operację różnicową. Nie ma gotowego rozwiązania, o którym wiem i wątpię, by istniało.
aa = { t[:3] for t in a }
tuple
i zastępuj operator różnicy