【发布时间】:2018-03-03 17:13:30
【问题描述】:
我有一个文件名列表,需要按特定顺序排列以执行某些操作。文件名是字母数字字符串,位于如下列表中
lis = ["8_19_dm12_file", "3_19_dm14_file", "8_19_dm9_file", "2_19_dm1_file", "3_19_dm2_file"]
现在我需要先根据第一个数字升序对它们进行排序,然后根据最后一个数字升序对它们进行排序。如下所示
lis = ["2_19_dm1_file", "3_19_dm2_file", "3_19_dm14_file", "8_19_dm9_file", "8_19_dm12_file"]
目前我可以单独执行此操作。我可以通过执行类似操作根据第一个数字进行排序
lis.sort(key=lambda x: x.split('_')[0])
['2_19_dm1_file', '3_19_dm14_file', "3_19_dm2_file" '8_19_dm12_file', '8_19_dm9_file']
在单独的操作中,我可以通过执行类似这样的操作根据最后一位数字进行排序
lis.sort(key=lambda x: int(re.findall(r'\d+', x.split("_")[2])[0]))
['2_19_dm1_file', "3_19_dm2_file" '8_19_dm9_file', '8_19_dm12_file', '3_19_dm14_file']
但是如果我同时运行这两个操作,我的列表又会变得混乱。我如何确保我能够根据我的要求进行排序?
【问题讨论】:
-
你知道在你当前的排序中'16_'会在'6_'之前吗?
标签: python regex python-3.x list sorting