我有大量的二元子列表,它们是名为 mylist
的列表的成员:
mylist = [['AB001', 22100],
['AB001', 32935],
['XC013', 99834],
['VD126', 18884],
['AB001', 34439],
['XC013', 86701]]
我想根据子列表是否包含与第一项相同的字符串,将 mylist
排序为新的子列表。例如,这就是我正在寻找要输出的代码:
newlist = [['AB001', 22100], ['AB001', 32935], ['AB001', 34439]],
[['XC013', 99834], ['XC013', 86701]],
[['VD126', 18884]]
这是我尝试编写代码的方式:
mylist = sorted(mylist)
newlist = []
for sublist in mylist:
id = sublist[0]
if id == next.id:
newlist.append(id)
print newlist
我还试图了解 itertools.groupby()
是否是解决此问题的正确工具。有人可以帮我解决这个问题吗?
最佳答案
你说这是 groupby
的工作是对的:
from itertools import groupby
from operator import itemgetter
mylist = [['AB001', 22100],
['AB001', 32935],
['XC013', 99834],
['VD126', 18884],
['AB001', 4439],
['XC013', 86701]]
print([list(value) for key, value in groupby(sorted(mylist), key=itemgetter(0))])
这将为您提供一个列表列表,按子列表中的第一项分组。
[[['AB001', 4439], ['AB001', 22100], ['AB001', 32935]],
[['VD126', 18884]],
[['XC013', 86701], ['XC013', 99834]]]
关于python - 根据共同的第一项将子列表分类为新的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114038/