假设我有一个[[x,y,z],[x,y,z]等...]等形式的列表,其中每个分组代表一个随机点。
我想按z坐标对我的点进行排序,然后在z的每个分组中,按x坐标对它们进行排序。这可能吗?
答案 0 :(得分:12)
当然,请查看“操作员模块功能”一节下的this page。基本上你只需要使用itemgetter操作符的sort键功能......
from operator import itemgetter
sorted(tuples, key=itemgetter(2,0))
答案 1 :(得分:2)
对于简单查找,请按Andrew White的建议使用itemgetter
。但是对于更复杂的查找,您可能必须使用def
或lambda
创建一个函数。例如:
>>> 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函数)。