Лучший подход здесь - это декорировать ключ сортировки ... Python будет сортировать кортеж по компонентам кортежа по порядку, поэтому создайте ключ кортежа с вашими критериями сортировки:
sorted(list_of_dicts, key=lambda d: (d['Name'] == 'TOTAL', d['Name'].lower()))
В результате получается ключ сортировки:
- (True, 'total') для {'Name': 'TOTAL', 'Rank': 100}
- (False, 'woo company') для {'Name': 'Woo Company', 'Rank': 15}
- (False, 'abc company') для {'Name': 'ABC Company', 'Rank': 20}
Так как False сортирует раньше, чем True, те, чьи имена не являются TOTAL, будут в итоге объединены, затем будут отсортированы по алфавиту, и TOTAL закончится в конце.