Использование list.sort()
для сортировки списка в месте или sorted
, чтобы получить новый список:
>>> L = [{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
>>> L.sort(key= lambda x:x['country'])
>>> L
[{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
Вы можете передать факультативный ключевое слово аргумент reverse = True
к sort
и sorted
отсортировать в порядке убывания.
Поскольку алфавит в верхнем регистре считается меньшим, чем соответствующая версия в малом корпусе (из-за их значения ASCII), вам также придется использовать str.lower
.
>>> L.sort(key= lambda x:x['country'].lower())
>>> L
[{'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'France'}, {'status': 1, 'country': 'usa'}]
Если эти словари соответствуют всем (т. е. все они имеют ключ «статус» и ключ «страна» и другие ключи), рассмотрите возможность использования экземпляров класса, созданного 'collections.name вместо dtuple'. Это сделает много вашего кода, включая сортировку, гораздо проще читать и писать. См. [Эту ссылку] (http://docs.python.org/2/library/collections.html#collections.namedtuple) для получения более подробной информации – kampu