首页 > 解决方案 > 在 Python 中按坐标和字母元组排序和过滤

问题描述

我在排序和过滤坐标和字母列表时遇到问题。我尝试使用 lambda,但由于我对它没有太多经验,所以没有走多远。

我有一个坐标元组列表和一个与该元组一起的字母,例如:

[((392, 100), 'e'), ((326, 100), 'u'), ((326, 101), 'a'), ((312, 101), 'i')]

我想对坐标进行排序,以便我可以按行的顺序以降序方式获取它们,因此先降序 y然后降序 x。换句话说,我需要它们的顺序与您阅读文本的顺序相同:开始和最左边的坐标是向下和向右。结果应该是:

[((326, 100), 'u'), ((392, 100), 'e'), ((313, 101), 'i'), ((326, 101), 'a')]

然后按照我得到的顺序过滤掉字母,所以最终的结果是

'ueia'

标签: pythonsortinglambdafilteringcoordinates

解决方案


data = [((392, 100), 'e'), ((326, 100), 'u'), ((326, 101), 'a'), ((312, 101), 'i')]

print( sorted(data, key=lambda k: k[0][::-1] ) )

印刷:

[((326, 100), 'u'), ((392, 100), 'e'), ((312, 101), 'i'), ((326, 101), 'a')]

对于字母:

print( ''.join(ch for _, ch in sorted(data, key=lambda k: k[0][::-1] ) ) )

印刷:

ueia

推荐阅读