Python按十进制格式排序排列

时间:2018-12-07 09:32:21

标签: python sorting

我想按照下面的编号排列列表,

01
02
03
001
002

但是默认的排序命令会给我

001
002
01
02
03

5 个答案:

答案 0 :(得分:1)

要保留长度排序而不是数字排序,我相信您需要根据2个条件进行排序:

nums = '03 01 002 02 001'

num_array = nums.split()
sorted_nums = sorted(num_array, key=lambda x: [len(x), x])

print(sorted_nums)

输出:

['01', '02', '03', '001', '002']

答案 1 :(得分:1)

或者,对列表进行双重排序:

>>> nums = '03 01 002 02 001'
>>> sorted(sorted(nums.split()),key=len)
['01', '02', '03', '001', '002']
>>> 

答案 2 :(得分:0)

s = '001 01 02 03 002'
l = s.split()
print(sorted(l, key=lambda e: (len(e), int(e) )))

输出:

C:\Users\Desktop>py x.py
['01', '02', '03', '001', '002']

答案 3 :(得分:0)

sorted_list = sorted(my_list, key=lambda x: (len(x), x))

首先检查字符串的长度,然后逐个字符地逐个字符串。

答案 4 :(得分:0)

xs = "01 02 03 001 002".split()
print(sorted(xs, key="{:<018s}".format))
# ['001', '002', '01', '02', '03']

除非您打高尔夫球,否则小数位数要超过18个小数,在key中使用两个条件可能是可行的方法。