使用itertools.groupby对属性进行分组

时间:2009-10-24 21:43:50

标签: python

我有一个“染色体”类的实例列表。

列表按染色体属性'方程'

排序

我现在想要删除属性'equation'相同的实例,只留下一个。

我不知道如何传递密钥,即?,以便它在'等式'上分组。

b = [a for a,b in groupby(list, ?)]

2 个答案:

答案 0 :(得分:7)

import operator

[a for a, b in groupby(thelist, operator.attrgetter('equation')]

顺便说一句,不要使用内置类型名称(例如listfile等)作为您自己的标识符,这是一个令人困惑且最好避免的做法,它最终会使您遇到特殊的错误除非你让自己离开它(即有一天你会维护你的代码,并发现自己使用list(sometuple)从一些元组中做出一个列表,或者类似的......如果你已经得到了奇怪的错误在此范围内使用list表示与list不同的内容! - )。

答案 1 :(得分:3)

以下是如何操作:

b = [a for a,b in groupby(list, key=lambda a: a.equation)]