我有这个列表排序:
>>> 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)
您可以指定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)