สมมติว่าฉันมีสอง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 \ a
แต่ไม่สนใจองค์ประกอบสุดท้ายจากทุก tuple ดังนั้นมันเหมือนกับทำอะไรเช่นนี้:
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')}
ผลลัพธ์ที่คาดหวัง:
b \ a = {('1', '2', '6', 'b')}
มีวิธีที่ชัดเจน / pythonic ของการบรรลุเป้าหมายนี้โดยไม่ต้องวนซ้ำด้วยตนเองในแต่ละชุดและตรวจสอบกับแต่ละtuple[:3]
?
set
และเขียนทับการดำเนินการที่แตกต่าง ไม่มีวิธีแก้ปัญหาแบบทันทีที่ฉันรู้และฉันสงสัยว่ามีอยู่
aa = { t[:3] for t in a }
tuple
และแทนที่ตัวดำเนินการที่แตกต่าง