我有一个坐标列表,它指示图像中检测到的单词的左上角位置(前两个值)和右下角坐标(后两个)
它看起来像这样:
boxes= [[ 27, 22, 84 , 54],
[261 ,127 ,294 ,163],
[224 , 21 ,279 , 54],
[ 45 ,83 , 96 ,111],
[ 10 ,126 , 66 ,163],
[189 ,185 ,219 ,222],
[154 , 21 ,192 , 59],
[278 , 25 ,318 , 58],
[146 ,188 ,186, 220]]
所以在[0]框中会给出[27,22,84,54],让我们分别称它们为startX,startY,endX,endY
对于可视化:
(27,22)------------.
' '
' '
' '
'---------------(84,54)
我需要以一种方式对其进行排序,即startY随着startX和startY的增加而开始最小化
所以输出必须是这样的
[[154 , 21 ,192 , 59],
[224 , 21 ,279 , 54],
[ 27, 22, 84 , 54],
[278 , 25 ,318 , 58],
[ 45 ,83 , 96 ,111],
[ 10 ,126 , 66 ,163],
[261 ,127 ,294 ,163],
[189 ,185 ,219 ,222],
[146 ,188 ,186, 220]]
Python将根据位置对元组进行排序,因此您可以将一个
key
传递给sorted()
,将元素按您希望排序的顺序排列:结果:
如果要就地对列表进行排序,请使用相同的键
boxes.sort()
好的,那么您想要的是首先对startX进行排序,然后对startY进行排序,同时考虑startX中元素之间的相对顺序。 它看起来是这样的:
这就是所谓的稳定排序。 现在,根据standard library reference,
sorted
函数实现了一个稳定的排序相关问题 更多 >
编程相关推荐