python - 根据共同的第一项将子列表分类为新的子列表

标签 python list sorting

我有大量的二元子列表,它们是名为 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/

相关文章:

python - 如何解决Graphene-django中的 'NoneType'对象没有属性 'fields'

python - 使用具有偏好和唯一性的 random.choice()

jquery - 在 jQuery 中对列表进行排序无法正常工作

c# - C# 中的自然排序顺序

c - 对数组中的元素进行排序以返回特定整数第一次出现的索引

python - 如何检查(键,值)对是否在包含大量Python字典的数组中

python - 返回类的类型声明在 PyCharm 中给出错误

python - xls Python 的元组列表

python - 将线图添加到 imshow 并更改轴标记

c++ - 在 C++ 中实现类型列表