我在对坐标和字母列表进行排序和过滤时遇到问题。我尝试使用 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