我们说我有一个像这样的列表列表:
l = [[3,4], [2,3], [1,2], [1,3], [1,2]]
如何根据每个子列表的第一个元素对此列表进行排序,并获取包含第一个相等排序元素的列表,
例如[[1,2],[1,2]]
?
答案 0 :(得分:2)
这是我的建议,根本没有优化,但易于阅读和理解,无需导入任何其他软件包:
l = [[3,4], [2,3], [1,2], [1,3], [1,2]]
# Sort by first then second element of sub-lists
l.sort(key=lambda x:(x[0],x[1]))
print(l)
# Get a list with the first equal sorted sub-lists
s = [l[0]]* l.count(l[0])
print(s)
答案 1 :(得分:-1)
首先你可以找到所有的双打:
l = [x for n, x in enumerate(l) if x in l[:n]]
然后你可以使用第一个元素排序:
l = sorted(l)
它比你反过来要快,特别是如果l很长,我会首先将它减少到最小列表然后排序。
如果您有三次出现的项目,则会返回一个列表,其中包含两次这些项目。您可以使用以下命令删除它:
l = [x for n, x in enumerate(l) if x not in l[:n]]
主要基于@georg的另一个答案。