假设我有两个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
但忽略每个元组中的最后一个元素。所以就像做这样的事情:
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]
?
3
我最初的想法是使它们成为类,定义比较运算符
—
肯尼·奥斯特罗姆
子类化
—
Ev。Kounis
set
并覆盖差异操作。我没有一个开箱即用的解决方案,我怀疑是否存在。
集合没有“ key = ...”或类似的东西(例如sort(..))。元组是不可变数和可哈希的,并根据其哈希进行比较。删除一个元素将使哈希无效。所以不-不可能。如果不需要该值,则可以创建3部分集:
—
Patrick Artner,
aa = { t[:3] for t in a }
@ AK47两个集合S和T之间的(集合)差写为S∖T,表示由不属于T的元素S组成的集合:x∈S∖T⟺x∈S∧x∉T
—
Grajdeanu Alex。
子类化
—
Pynchia
tuple
并覆盖差异运算符