排序后获得第一个相等的值

时间:2018-03-26 20:27:26

标签: python sorting

我们说我有一个像这样的列表列表:

l = [[3,4], [2,3], [1,2], [1,3], [1,2]]

如何根据每个子列表的第一个元素对此列表进行排序,并获取包含第一个相等排序元素的列表, 例如[[1,2],[1,2]]

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的另一个答案。