Chr*_*ris 1 python list categories sublist
如何根据每个子列表中的公共密钥创建一个新的子列表层,以便对子列表进行分类?换句话说,如何将子列表放入列表中的新子列表中,索引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']]
Run Code Online (Sandbox Code Playgroud)
我想将苹果的三个子列表包含在一个新的子列表中,以及将两个香蕉子列表放入一个新的子列表中,等等.
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']]]
Run Code Online (Sandbox Code Playgroud)
奖励积分,如果您可以告诉我如何进行多次分类(例如,不仅按水果类型分类,还按周分类)?
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']]]
Run Code Online (Sandbox Code Playgroud)