Sort list of strings by a part of the string
list, python, sorting, string
Solution
To change sorting key, use the `key` parameter:
>>>s = ['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)']
>>> s.sort(key = lambda x: x.split()[1])
>>> s
['variable3 (name1)', 'variable2 (name2)', 'variable1 (name3)']
>>>
Works the same way with `sorted`:
>>>s = ['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)']
>>> sorted(s)
['variable1 (name3)', 'variable2 (name2)', 'variable3 (name1)']
>>> sorted(s, key = lambda x: x.split()[1])
['variable3 (name1)', 'variable2 (name2)', 'variable1 (name3)']
>>>
Note that, as described in the question, this will be an alphabetical sort, thus for 2-digit components it will not interpret them as numbers, e.g. "11" will come before "2".
Problem
I have a list of strings which have the following format: ``` ['variable1 (name1)', 'variable2 (name2)', 'variable3 (name3)', ...] ``` ... and I want to sort the list based on the `(nameX)` part, alphabetically. How would I go about doing this?