data = [[1,2,3],[3,2,3],[1,1,1],[7,8,9],[7,7,9]]
from itertools import groupby
# for example if you need to get data grouped by each third element you can use the following code
res = [list(v) for l,v in groupby(sorted(data, key=lambda x:x[2]), lambda x: x[2])]# use third element for grouping
^{} 就是这样做的。
虽然
for
循环在很大程度上是必需的,但是if
语句不是必需的这里有两个案子。两者都需要以下进口:
您将使用itertools.groupby和operator.attrgetter或operator.itemgetter。
对于按
obj_1.some_attr == obj_2.some_attr
分组的情况:对于
a[some_index] == b[some_index]
:请注意,您需要排序,因为当键的值更改时,
itertools.groupby
将生成一个新组。注意,您可以使用它创建一个类似S.Lott的答案的
dict
,但不必使用collections.defaultdict
。使用字典理解(仅适用于Python3+,也可能适用于Python2.7,但我不确定):
对于以前版本的Python,或者作为更简洁的替代:
你也可以尝试使用itertools.groupby。请注意,下面的代码只是一个示例,应根据您的需要进行修改:
相关问题 更多 >
编程相关推荐