如何对列表列表进行排序,使x值增加,如果2个x值相同,则较低的y值优先?
例如:[[0,1],[1,0],[1,2],[1,3]]应分为[[0,1],[1,3],[1] ,2],[1,1]]。
一种方法是先在列表中应用.sort()函数,然后比较等于x的y值,但是有更简单的方法(使用lambda等)
答案 0 :(得分:3)
看起来您要排序的所有项目都是数字值的双元素列表,因此以下内容应该有效。您可以为内置key
函数指定sorted
参数,以便为每个项创建排序键。在这种情况下,您想要的键与项目本身相同,但使用负y值来翻转它们的顺序。
>>> data = [[0, 1], [1, 0], [1, 2], [1, 3]]
>>> print(sorted(data, key=lambda x: (x[0], -x[1])))
[[0, 1], [1, 3], [1, 2], [1, 0]]
如果由于某种原因这不起作用(也许你在那里有非数字),你可以使用相同的方法,但不同地构造key
函数以提供适当的比较器,无论你的数据实际上就像。