Re: [問題] 複雜資料結構的排序

看板Python作者 (sbr)時間16年前 (2009/08/27 20:55), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《cobrasgo (火體金魔龍)》之銘言: : 請問,下面這個list : [{"dataA": "axc", "dataB": "eee"}, : {"dataA": "ccc", "dataB": "dddd"}, : {"dataA": "333", "dataB": "aaa"}] : 若我有時候想用dataA的value來排序,也就是這個list會變成 : [{"dataA": "333", "dataB": "aaa"}, : {"dataA": "axc", "dataB": "eee"}, : {"dataA": "ccc", "dataB": "dddd"} ] : 因為應該是333 axc ccc是我預期的結果 : 但有時候要用dataB的value來排序 : 請問一下要怎樣做? : 謝謝 A=[{"dataA": "axc", "dataB": "eee"}, {"dataA": "ccc", "dataB": "dddd"}, {"dataA": "333", "dataB": "aaa"}] ex: A.sort(key=lambda x: x['dataA']) A.sort(key=lambda x: x['dataB']) 請參閱 Python 2.5 Library Reference: 3.6.4 Mutable Sequence Types 其中關於 sort method 的說明。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.128.78

08/27 20:56, , 1F
感謝,我剛剛找到一個方法,是用cmp實作的
08/27 20:56, 1F

08/27 20:57, , 2F
A.sort(lambda x, y: cmp(x["dataB"], y["dataB"]))
08/27 20:57, 2F

08/27 20:57, , 3F
不過cmp似乎有performance的問題
08/27 20:57, 3F

08/27 20:58, , 4F
對,指定 cmp 的效率應 <= 指定 key filter
08/27 20:58, 4F
文章代碼(AID): #1Abe9L-I (Python)
討論串 (同標題文章)
文章代碼(AID): #1Abe9L-I (Python)