所以,存在一種簡單的方法來計算經由set.intersection兩個集合的交集()。不過,我有以下問題:Python的自定義設置相交
class Person(Object):
def __init__(self, name, age):
self.name = name
self.age = age
l1 = [Person("Foo", 21), Person("Bar", 22)]
l2 = [Person("Foo", 21), Person("Bar", 24)]
union_list = list(set(l1).union(l2))
# [Person("Foo", 21), Person("Bar", 22), Person("Bar", 24)]
(Object
是一個基類由我的ORM實現基本__hash__
和__eq__
功能,這實質上增加了類散列的每一個成員提供換句話說,返回的將是類的每一個元素)
在這個階段的哈希__hash__
,我想只.name
運行一個交集操作,查找,比如,Person('Bar', -1).intersection(union_list) #= [Person("Bar", -1), Person("Bar", 22), Person("Bar", 24)]
。 (在這一點上,典型.intersection()
不會給我什麼,我不能在Person
類中重寫__hash__
或__eq__
,因爲這會覆蓋原有的並集(我認爲)
什麼是應該做的最好辦法這在Python 2.x的
編輯:請注意,解決方案不有依靠set
不過,我需要找到工會,然後交叉,所以感覺這樣服從於一個集合。 (但我願意接受使用任何你認爲有價值的魔法的解決方案,只要它解決了我的問題!)
我不明白你想要的結果。您能否請*解釋*結果應該包含什麼? –
錯誤廢話,那應該是.union,而不是.intersection。我已經更新了這個問題 - 讓我知道這是否更清楚? –
由於示例代碼沒有您聲明的結果,我仍然有點困惑。 –