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 に答える