您能帮我解决这个问题吗? 我怎样才能在Python中对这个'.tif'文件进行升序排序?
数据 = ['prec0000.491.tif', 'prec0000.1.tif', 'prec0000.750.tif', 'prec0000.4.tif', 'prec0000.0570.tif', 'prec0000.0459.tif', 'prec0000.313.tif', 'prec0000.118.tif', 'prec0000.0295.tif', 'prec0000.492.tif', 'prec0000.0752.tif', 'prec0000.0171.tif', 'prec0000.437.tif', 'prec0000.2.tif']
我想对这些文件进行升序排序。例如:['prec0000.1.tif', 'prec0000.2.tif',..., 'prec0000.0752.tif']
非常感谢您的帮助! 谢谢!
我已经尝试通过此代码:
数据=排序(数据,键= lambda x:str(os.path.splitext(x)))
我的输出是:
['prec0000.0171.tif', 'prec0000.0295.tif', 'prec0000.0459.tif', 'prec0000.0570.tif', 'prec0000.0752.tif', 'prec0000.1.tif', 'prec0000.118.tif', 'prec0000.2.tif', 'prec0000.313.tif', 'prec0000.4.tif', 'prec0000.437.tif', 'prec0000.491.tif', 'prec0000.492.tif', 'prec0000.750.tif']
问题在于您当前的 lambda 函数用作
sorted
函数中的键。 os.path.splitext
函数返回文件的基本名称和扩展名的元组,这导致排序基于该元组。
以下是实现所需排序的方法:
import os
data = ['prec0000.491.tif', 'prec0000.1.tif', 'prec0000.750.tif', 'prec0000.4.tif', 'prec0000.0570.tif', 'prec0000.0459.tif', 'prec0000.313.tif', 'prec0000.118.tif', 'prec0000.0295.tif', 'prec0000.492.tif', 'prec0000.0752.tif', 'prec0000.0171.tif', 'prec0000.437.tif', 'prec0000.2.tif']
data = sorted(data, key=lambda x: float(x.split('.')[1]))
print(data)
此代码将输出所需的排序文件名:
['prec0000.1.tif', 'prec0000.2.tif', 'prec0000.0295.tif', 'prec0000.0459.tif', 'prec0000.0570.tif', 'prec0000.118.tif', 'prec0000.313.tif', 'prec0000.4.tif', 'prec0000.437.tif', 'prec0000.491.tif', 'prec0000.492.tif', 'prec0000.750.tif', 'prec0000.0171.tif', 'prec0000.0752.tif']