正規表現とキー ラムダを使用できます。
>>> L.sort(key=lambda s: int(re.search(r'_(\d+)',s).group(1)))
>>> L
['actor_1', 'actor_3', 'actor_5', 'actor_55', 'actor_130']
Python の並べ替えは安定しているため、最初にアンダースコアの左側の文字列で並べ替え、次に右側の数字で並べ替えたい場合は、その場所で 2 回並べ替えるだけです。
>>> L = ['actor_1', 'actor_3', 'actor_130', 'actor_55', 'voice_5', 'actor_5']
>>> L.sort()
>>> L.sort(key=lambda s: int(re.search(r'_(\d+)',s).group(1)))
>>> L
['actor_1', 'actor_3', 'actor_5', 'voice_5', 'actor_55', 'actor_130']
または、キー関数でタプルを返し、最初に数字でソートし、次に LH 文字列でソートすることで、同じことを行うことができます。
>>> L.sort(key=lambda s: (int(re.search(r'_(\d+)',s).group(1)),s))
>>> L
['actor_1', 'actor_3', 'actor_5', 'voice_5', 'actor_55', 'actor_130']
または:
>>> L.sort(key=lambda s: (int(s.split('_')[1]), s))
多く の場合、1 回の複雑な並べ替えよりも 2 回の並べ替えを行う方が高速です。