Hãy nói rằng tôi có hai 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')}
Bây giờ, những gì tôi muốn làm là tìm sự khác biệt được thiết lập b \ a
nhưng bỏ qua phần tử cuối cùng từ mỗi bộ dữ liệu. Vì vậy, nó giống như làm một cái gì đó như thế này:
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')}
Sản lượng dự kiến:
b \ a = {('1', '2', '6', 'b')}
Có cách rõ ràng / pythonic nào để đạt được điều này mà không cần phải lặp lại thủ công qua từng bộ và kiểm tra từng bộ tuple[:3]
không?
set
và ghi đè các hoạt động khác nhau. Không có giải pháp vượt trội nào mà tôi biết và tôi nghi ngờ một giải pháp tồn tại.
aa = { t[:3] for t in a }
tuple
và ghi đè toán tử khác biệt