Python 中对象属性的交集

Intersection of Object Attributes in Python

所以我做了 2 组对象,像这样。

class 4digits:
    def __init__(self, value):
        self.value = value
        self.first = (value - (value % 100)) / 100
        self.last = value % 100

这些都是 4 位数字对象,所以就像...

object.value = 1234
object.first = 12
object.last = 34

如果我有 2 个集合,set1 和 set2,我想更新 set1 和 set2 以仅包含 set1 的最后一个属性与 set2 的第一个属性相匹配的对象。

比如... 组 1 中的 1234 将匹配组 2 中的 3456。

我可以很容易地将它作为一个列表而不是一个集合来完成,但是如果我能弄清楚这个过程,集合感觉会更有效率,但我不确定我如何 return 对象属性的交集.任何帮助。

已编辑:因为我被要求提供代码,而我的假设与我实际所做的并不完全相同。

感谢 Jez,我得到了这个答案:

def lastinfirst(list1, list2):
    firsts = set( l2.first for l2 in list2)
    newlist1 = [ l1 for l1 in list1 if l1.last in firsts]
    return newlist1

def firstinlast(list1, list2):
    lasts = set( l1.last for l1 in list1)
    newlist2 = [ l2 for l2 in list2 if l2.first in lasts]
    return newlist2

如果我没有正确理解你想要什么,应该这样做:

# Get the set of unique boroughs in which people want rooms:
wantedboroughs = set( w.borough for w in wantrooms )

# Get all records for people who have rooms in those boroughs:
result = [ h for h in haverooms if h.borough in wantedboroughs ]

好吧,现在您已将问题编辑为根本不涉及房间和行政区。但也许您可以概括此处举例说明的原则。