我有一个“染色体”类的实例列表。
列表按染色体属性'方程'
排序我现在想要删除属性'equation'相同的实例,只留下一个。
我不知道如何传递密钥,即?,以便它在'等式'上分组。
b = [a for a,b in groupby(list, ?)]
答案 0 :(得分:7)
import operator
[a for a, b in groupby(thelist, operator.attrgetter('equation')]
顺便说一句,不要使用内置类型名称(例如list
,file
等)作为您自己的标识符,这是一个令人困惑且最好避免的做法,它最终会使您遇到特殊的错误除非你让自己离开它(即有一天你会维护你的代码,并发现自己使用list(sometuple)
从一些元组中做出一个列表,或者类似的......如果你已经得到了奇怪的错误在此范围内使用list
表示与list
不同的内容! - )。
答案 1 :(得分:3)
以下是如何操作:
b = [a for a,b in groupby(list, key=lambda a: a.equation)]