Вы не возвращаете значение того, как вы хотите разделить, вам нужно вернуть его из функции sortprofiles
, и тогда ваша функция будет работать так, как ожидалось!
Раньше вы ничего не возвращали, чтоэквивалентно возвращению None
, и когда вы пытаетесь запустить оператор сравнения, такой как <
для None, вы получаете исключение TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'
, поэтому ниже будет работать
def sortprofiles(item):
#You need to return the key you want to sort on
return item.split('_')[-2]
local_hostname = 'ma-tsp-a01'
profile_files = ['/path/to/file/TSP_D01_ma-tsp-a01\n',
'/path/to/file/TSP_D02_ma-tsp-a02\n',
'/path/to/file/TSP_ASCS00_ma-tsp-a01\n',
'/path/ato/file/TSP_DVEBMGS03_ma-tsp-a03\n',
'/path/to/file/TSP_DVEBMGS01_ma-tsp-a01\n']
print(sorted(profile_files, key=sortprofiles))
Выход будет тогда
['/path/to/file/TSP_ASCS00_ma-tsp-a01\n', '/path/to/file/TSP_D01_ma-tsp-a01\n', '/path/to/file/TSP_D02_ma-tsp-a02\n', '/path/to/file/TSP_DVEBMGS01_ma-tsp-a01\n', '/path/ato/file/TSP_DVEBMGS03_ma-tsp-a03\n']