我在排序坐标列表时遇到问题
原始坐标:
[(229, 42), (159, 42), (50, 42), (114, 6), (52, 6), (308, 5), (193, 3)]
我正在使用以下代码进行排序。
sorted(coordinates , key=lambda k: [k[0], k[1]],reverse=False)
排序后的当前坐标
[(50, 42), (52, 6), (114, 6), (159, 42), (193, 3), (229, 42), (308, 5)]
但我想要的 以这种方式协调
[(52, 6), (114, 6), (193, 3), (308, 5), (50, 42), (159, 42), (229, 42) ]
有任何建议如何做到这一点? 我尝试按x排序然后跟着y,但结果不是我想要的。
答案 0 :(得分:-1)
看起来你正试图按区域排序,这意味着简单地将数字相乘,例如:
In []:
sorted(coordinates , key=lambda k: k[0]*k[1])
Out[]:
[(52, 6), (193, 3), (114, 6), (308, 5), (50, 42), (159, 42), (229, 42)]
注意:您是否有(114, 6)
和(193, 3)
乱序 - 如果没有,那么它是其他排序函数。
我可以通过一些拉伸的欧几里德距离计算强制OP寻找的顺序,但这完全是任意的:
In []:
import math
sorted(c, key=lambda k: math.hypot(k[0]/5, k[1]*5))
Out[]:
[(52, 6), (114, 6), (193, 3), (308, 5), (50, 42), (159, 42), (229, 42)]