Python排序字​​符串列表

Har*_*rry 1 python sorting

我该如何排序?

>>> list = ["a_0","a_1","a_2","a_3","a_10","a_11","a_23","a_5","a_6","a_5"]
>>> sorted(list)
['a_0', 'a_1', 'a_10', 'a_11', 'a_2', 'a_23', 'a_3', 'a_5', 'a_5', 'a_6']>
Run Code Online (Sandbox Code Playgroud)

我需要的是:

['a_0', 'a_1', 'a_2', 'a_3', 'a_5', 'a_5', 'a_6, 'a_10', 'a_11', 'a_23']>
Run Code Online (Sandbox Code Playgroud)

所以它根据"数字"排序谢谢我提前!

tai*_*ot2 10

你的意思是这个:sorted(list, key=lambda d: int(d[2:]))

  • 请注意,这将根据数字排序**,而不是基于'a'.它还要求数字从字符2开始. (2认同)

Tho*_*ers 6

您需要编写一个"键功能",将您的字符串转换为具有所需顺序的搜索键.例如:

def key(k):
    s, sep, i = k.partition('_')
    return (s, int(i))

>>> L = ["a_0","a_1","b_2","c_2","a_10","a_11","a_23","b_5","a_6","c_5"]
>>> sorted(L, key=key)
['a_0', 'a_1', 'a_6', 'a_10', 'a_11', 'a_23', 'b_2', 'b_5', 'c_2', 'c_5']
Run Code Online (Sandbox Code Playgroud)