首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何根据几个值对字典列表进行排序?

Python:如何根据几个值对字典列表进行排序?
EN

Stack Overflow用户
提问于 2013-04-18 20:27:04
回答 2查看 28.2K关注 0票数 63

我想先按一个值对列表进行排序,然后再按第二个值排序。有什么简单的方法可以做到这一点吗?下面是一个小示例:

代码语言:javascript
复制
A = [{'name':'john','age':45},
     {'name':'andi','age':23},
     {'name':'john','age':22},
     {'name':'paul','age':35},
     {'name':'john','age':21}]

此命令用于按'name'对此列表进行排序

代码语言:javascript
复制
sorted(A, key = lambda user: user['name'])

但是如何通过第二个值对该列表进行排序呢?就像本例中的'age'

我想要这样的排序(首先按'name'排序,然后按'age'排序):

代码语言:javascript
复制
andi - 23
john - 21
john - 22
john - 45
paul - 35

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-04-18 20:28:36

代码语言:javascript
复制
from operator import itemgetter

sorted(your_list, key=itemgetter('name', 'age'))
票数 53
EN

Stack Overflow用户

发布于 2015-01-23 01:19:49

这是另一种通用的解决方案--它按键和值对dict的元素进行排序。它的优点--不需要指定关键字,如果某些字典中缺少一些关键字,它仍然可以工作。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16082954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档