如何根据子字符串对列表进行排序?

Drw*_*ite 4 python django

我有这个列表排序:

>>> L = ['actor_1', 'actor_3', 'actor_130', 'actor_55', 'actor_5']
>>> L.sort()
>>> L
['actor_1', 'actor_130', 'actor_3', 'actor_5', 'actor_55']
Run Code Online (Sandbox Code Playgroud)

是否有一种干净的方法可以使列表按下划线后的数字排序,使其像下面一样?:

['actor_1', 'actor_3', 'actor_5', 'actor_55', 'actor_130']
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 8

您可以指定key生成比较密钥的函数:

>>> L = ['actor_1', 'actor_3', 'actor_130', 'actor_55', 'actor_5']
>>> def sort_key(s):
...     s, n = s.split('_')
...     return s, int(n)
...
>>> L.sort(key=sort_key)
>>> L
['actor_1', 'actor_3', 'actor_5', 'actor_55', 'actor_130']
Run Code Online (Sandbox Code Playgroud)