Katakanlah saya punya dua 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')}
Sekarang, yang ingin saya lakukan adalah menemukan perbedaan set b \ a
tetapi mengabaikan elemen terakhir dari setiap tuple. Jadi seperti melakukan sesuatu seperti ini:
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')}
Output yang diharapkan:
b \ a = {('1', '2', '6', 'b')}
Apakah ada cara yang jelas / pythonic untuk mencapai ini tanpa harus secara manual mengulangi setiap set dan memeriksa masing-masing tuple[:3]
?
set
dan menimpa operasi perbedaan. Tidak ada solusi out-of-the-box yang saya tahu dan saya ragu ada.
aa = { t[:3] for t in a }
tuple
dan timpa operator perbedaan