如何对此列表进行排序?

时间:2013-07-16 03:14:22

标签: python list sorting dictionary

我有一个这样的清单:

li = [
  {
    'name': 'Lee',
    'age': 22
  },
  {
    'name': 'Mike',
    'age': 34
  },
  {
    'name': 'John',
    'age': 23
  }
]

我想用sorted方法对列表进行排序,然后按age键排序

如何实现它?

2 个答案:

答案 0 :(得分:8)

使用key function

li_sorted = sorted(li, key=lambda x: x['age'])

答案 1 :(得分:1)

与@kojiro建议相同的Python3是

>>> sorted(li, key=lambda x:sorted(x.items()))
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]

显然,这比

效率低
>>> sorted(li, key=lambda x:x['age'])
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]

反正。还有一个好处是它不依赖于'age' < 'name'

这一事实

以下是使用itemgetter

编写相同内容的方法
>>> from operator import itemgetter
>>> sorted(li, key=itemgetter('age'))
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]