23

Pythonで連想配列をキーでソートするにはどうすればよいですか?

私は次の構造を持っています:

people = [
    {'name' : 'Bob', 'number' : '123'},
    {'name' : 'Bill', 'number' : '234'},
    {'name' : 'Dave', 'number' : '567'},
]

名前順に並べたい。これを行う組み込み関数はありますか?

4

1 に答える 1

13

sorted関数のkeyパラメーターを使用します。

sorted(people, key=lambda dct: dct['name'])

これがどのように機能するかを説明する優れた Sorting HOWTOがあります。


>>> people = [
    {'name' : 'Bob', 'number' : '123'},
    {'name' : 'Bill', 'number' : '234'},
    {'name' : 'Dave', 'number' : '567'},
]       
>>> sorted(people, key=lambda dct: dct['name'])
[{'name': 'Bill', 'number': '234'}, 
 {'name': 'Bob', 'number': '123'}, 
 {'name': 'Dave', 'number': '567'}]

または、使用することもできます

import operator
sorted(people, key=operator.itemgetter('name'))

を使用するoperator.itemgetter('name')と、 を使用するよりもわずかに高速です lambda dct: dct['name']

于 2013-05-24T21:18:43.947 に答える