Если вам нужно отсортировать по приоритетам, вы можете попробовать ключевую функцию, которая возвращает кортеж. В вашем конкретном случае, насколько мне известно, эта функция будет работать нормально:
response_query = sorted(
response,
key=lambda i: (len(i['name'].split()) > 1, i['name'])
)
Другими словами, я добавил условие len(i['name'].split()) > 1
, возвращающее False
(оно будет go во-первых) если name
состоит только из одного слова, иначе True
.
Для случая, если вам нужно условие приоритета, так как name
начинается с термина, который вы использовали в поиске, результат будет:
term = 'john'
...
response_query = sorted(
response,
key=lambda i: (not i['name'].lower().startswith(term), i['name'])
)