我想先按一个值对列表进行排序,然后再按第二个值排序。有什么简单的方法可以做到这一点吗?下面是一个小示例:
A = [{'name':'john','age':45},
{'name':'andi','age':23},
{'name':'john','age':22},
{'name':'paul','age':35},
{'name':'john','age':21}]
此命令用于按'name'
对此列表进行排序
sorted(A, key = lambda user: user['name'])
但是如何通过第二个值对该列表进行排序呢?就像本例中的'age'
。
我想要这样的排序(首先按'name'
排序,然后按'age'
排序):
andi - 23
john - 21
john - 22
john - 45
paul - 35
谢谢!
发布于 2013-04-18 20:28:36
from operator import itemgetter
sorted(your_list, key=itemgetter('name', 'age'))
发布于 2015-01-23 01:19:49
这是另一种通用的解决方案--它按键和值对dict的元素进行排序。它的优点--不需要指定关键字,如果某些字典中缺少一些关键字,它仍然可以工作。
def sort_key_func(item):
""" helper function used to sort list of dicts
:param item: dict
:return: sorted list of tuples (k, v)
"""
pairs = []
for k, v in item.items():
pairs.append((k, v))
return sorted(pairs)
https://stackoverflow.com/questions/16082954
复制相似问题