我有一个属性为qt
、cons
和consper
的对象列表,必须合并所有具有相同consper
值的对象。最好的办法是什么?列表已按consper
排序。你知道吗
示例:
使用类house
的对象列表:
class house():
def __init__(self, qt, cons, consper):
self.qt = qt
self.cons = cons
self.consper = consper
打开此列表:
l = [
house(2, 20, 10),
house(3, 31, 10),
house(6, 70, 11),
house(2, 40, 20),
house(1, 25, 25)]
在此列表中:
l_new = [
house(5, 51, 10),
house(6, 70, 11),
house(2, 40, 20),
house(1, 25, 25)]
通过添加前两个对象(因为它们的属性consper是等价的)
不使用itertools,您可以执行以下操作:
输出
您可以使用
itertools.groupby
:输出:
如果项目已按该属性排序,则可以使用
itertools.groupby
获取组,使用sum
获取其他属性的总和。您还必须首先将组转换为list
,因为它们是迭代器。你知道吗或使用字典:
相关问题 更多 >
编程相关推荐