Python中的每個列表或集合用法的例子似乎都包含一些普通的整數情況,但我有兩個對象列表,其中name屬性定義兩個對象實例是「相同」還是不(其他屬性可能有不同的值)。基於屬性組合兩個對象列表
我可以創建一個包含兩個列表,排序的所有項目的列表,以
tmpList = sorted(list1 + list2, key=attrgetter('name'))
,但我怎麼做相同的,因此必須在name屬性相同的值列表項選自第二個列表?
例如結合這兩個列表
list1 = [obj('Harry',18), obj('Mary',27), obj('Tim', 7)]
list2 = [obj('Harry', 22), obj('Mary', 27), obj('Frank', 40)]
將導致
list = [obj('Harry',22), obj('Mary', 27), obj('Tim', 7), obj('Frank', 40)]
(I使用OBJ()作爲縮寫符號用於具有兩個屬性的對象。)
看來我不能在大多數set和list函數中使用attrgetter()函數,就像我可以使用sorted()函數一樣,所以我無法弄清楚我應該如何執行此操作。我懷疑我可以使用lambda函數,但是我對函數式編程不太熟悉,所以我似乎無法解決這個問題。
天真的解決方案(首先挑選在兩個列表中唯一的所有項目,然後將該列表與第二個列表中的剩餘項目結合起來)看起來非常冗長,因此Python中必須有一個更簡單的方法。
爲什麼不使用字典? – JoshD 2010-10-05 07:12:06