按第三个元素排序Python列表,然后按第一个元素排序等?

时间:2011-12-15 15:51:19

标签: python list sorting

假设我有一个[[x,y,z],[x,y,z]等...]等形式的列表,其中每个分组代表一个随机点。

我想按z坐标对我的点进行排序,然后在z的每个分组中,按x坐标对它们进行排序。这可能吗?

4 个答案:

答案 0 :(得分:12)

当然,请查看“操作员模块功能”一节下的this page。基本上你只需要使用itemgetter操作符的sort键功能......

from operator import itemgetter
sorted(tuples, key=itemgetter(2,0))

答案 1 :(得分:2)

对于简单查找,请按Andrew White的建议使用itemgetter。但是对于更复杂的查找,您可能必须使用deflambda创建一个函数。例如:

>>> sorted(l, key=lambda x: (x[0][2], x[0][0]))
[[[10, 2, 3], [4, 5, 6]], [[8, 13, 9], [15, 16, 17]], [[9, 3, 9], [9, 10, 11]]]

答案 2 :(得分:2)

如果您的列表的格式为

[ [[x,y,z],[x1,y1,z1]] , [[x,y,z],[x1,y1,z1]] ... ]

然后使用它:

sorted(tuples, key=lambda x: (x[0][2], x[0][0]))

答案 3 :(得分:0)

如果你进入White先生链接的页面,你会看到如何指定一个任意函数来计算你的排序键(使用提供的方便的cmp_to_key函数)。