近期遇到一个小任务,要求按序号(integer affix:整数前缀)从小到大的顺序输出某列表中所有的字符串元素。当时查了一些资料解决了,在此做个记录。
一、问题描述
输入: li = ['99_A_item_b', '1_A_item_a', '12_A_item_c', '102_A_item_f', '20_A_item_d', '15_A_item_e']
(该列表是自己随便编的,但当时处理的列表有个特点,即每一项都有一个子串“A_”,且其前面是数字加下划线,方便定位查找)
预期输出:['1_A_item_a', '12_A_item_c', '15_A_item_e', '20_A_item_d', '99_A_item_b', '102_A_item_f']
如果用普通的list.sort()方法,会发现它排序的法则与我们预期的不一样:
它是根据字符串的第一位、第二位依次进行排序:比如每个元素的第一位,分别是1,1,1,1,2,9;第二位分别是0,2,5等等。
二、解决方案
sorted函数加上一个lambda函数(笔者认为非常妙,读者觉得香