如何根据每个子列表中的公共(public)键创建新的子列表层以便对子列表进行分类?换句话说,如何将子列表放入索引 1 处的每个项目都相同的列表中的新子列表中?
例如,我想将以下子列表列表转换为子列表列表,其中每个子列表都在一个新的子列表中,其中索引 1 处的每个项目在该子列表中都是相同的。我想把这个列表中的苹果、香蕉和橘子的子列表放到一个新的子列表中。
lsta = [['2014W01','apple',21,'apple@gmail.com'],['2014W02','apple',19,'apple@g.com'],['2014W02','banana',51,'b@gmail.com'],['2014W03','apple',100,'apple@gmail.com'],['2014W01','banana',71,'b@yahoo.com'],['2014W02','organge',21,'organge@gmail.com']]
我希望苹果的三个子列表包含在一个新的子列表中,以及香蕉的两个子列表包含在一个新的子列表中,等等。
Desired_List = [[['2014W01','apple',21,'apple@gmail.com'],['2014W02','apple',19,'apple@g.com'],['2014W03','apple',100,'apple@gmail.com']],[['2014W02','banana',51,'b@gmail.com'],['2014W01','banana',71,'b@yahoo.com']],[['2014W02','organge',21,'organge@gmail.com']]]
奖励积分,如果你能告诉我如何进行多重分类(例如,不仅按水果类型分类,而且按周分类)?
请您参考如下方法:
In [43]: import itertools as IT
In [44]: import operator
In [46]: [list(grp) for key, grp in IT.groupby(sorted(lsta, key=operator.itemgetter(1)), key=operator.itemgetter(1))]
Out[46]:
[[['2014W01', 'apple', 21, 'apple@gmail.com'],
['2014W02', 'apple', 19, 'apple@g.com'],
['2014W03', 'apple', 100, 'apple@gmail.com']],
[['2014W02', 'banana', 51, 'b@gmail.com'],
['2014W01', 'banana', 71, 'b@yahoo.com']],
[['2014W02', 'organge', 21, 'organge@gmail.com']]]
