2011-02-19 58 views
4

我想對Facebook的Graph API返回的朋友列表進行排序。排序後的結果需要按名稱的字母順序排列。如何按字母順序排列單個鍵上的字典數組?

[ 
     { 
     "name": "Joe Smith", 
     "id": "6500000" 
     }, 
     { 
     "name": "Andrew Smith", 
     "id": "82000" 
     }, 
     { 
     "name": "Dora Smith", 
     "id": "97000000" 
     }, 
     { 
     "name": "Jacki Smith", 
     "id": "107000" 
     } 
] 

其他注意事項:我使用的是Google App Engine,它使用Python 2.5.x.

+0

谷歌App Engine的使用Python 2.5:http://code.google.com/appengine/docs/python/overview.html – 2011-02-19 13:35:41

+0

對不起,我的錯字。 – 2011-02-21 22:52:17

回答

-1

如果你的列表被稱爲A,你可以用這種方式使用排序是:

A.sort(cmp = lambda x,y: cmp(x["name"],y["name"]))

8
sorted(flist, key=lambda friend: friend["name"]) 
+0

這似乎並不奏效。由於在Google App Engine上運行,我應該注意到我在Python 1.5.x上。 – 2011-02-19 05:11:32

+0

list.sort()中的`sorted()`函數和`key`參數都需要版本2.4和更新版本。我不知道@charleyc的方法是否適用於1.5.x版本。 – MHC 2011-02-19 05:28:19

3
import operator 

sorted(my_list, key=operator.itemgetter("name")) 

此外,itemgetter可以採取一些參數,並返回這些項目的元組,所以你可以排序在數字鍵的是這樣的:

sorted(my_list, key=operator.itemgetter("name", "age", "other_thing")) 

sorted函數返回一個新的排序列表。如果要排序的位置列表,請使用:

my_list.sort(key=operator.itemgetter("name"))