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