排序python中的字典列表

Drw*_*ite 2 python list

我有这个清单:

L = [{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
Run Code Online (Sandbox Code Playgroud)

如何按country(或status)元素ASC/DESC 对此列表进行排序.

Ash*_*ary 9

使用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'}]
Run Code Online (Sandbox Code Playgroud)

您可以将可选的关键字参数传递reverse = Truesortsorted以降序排序.

由于大写字母被认为小于相应的小写字母(由于它们的ASCII值),因此您可能也必须使用str.lower它.

>>> L.sort(key= lambda x:x['country'].lower())
>>> L
[{'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'France'}, {'status': 1, 'country': 'usa'}]
Run Code Online (Sandbox Code Playgroud)


jam*_*lak 7

>>> from operator import itemgetter
>>> L = [{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
>>> sorted(L, key=itemgetter('country'))
[{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
>>> sorted(L, key=itemgetter('country'), reverse=True)
[{'status': 1, 'country': 'usa'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'France'}]
>>> sorted(L, key=itemgetter('status'))
[{'status': 1, 'country': 'France'}, {'status': 1, 'country': 'canada'}, {'status': 1, 'country': 'usa'}]
Run Code Online (Sandbox Code Playgroud)