在 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'
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

最新更新