2

我有一个这样的列表:

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

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

如何实现?

4

2 回答 2

8

使用按键功能

li_sorted = sorted(li, key=lambda x: x['age'])
于 2013-07-16T03:18:23.473 回答
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'}]
于 2013-07-16T03:55:49.173 回答