作者sbrhsieh (sbr)
看板Python
標題Re: [問題] 複雜資料結構的排序
時間Thu Aug 27 20:55:47 2009
※ 引述《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
推 cobrasgo:感謝,我剛剛找到一個方法,是用cmp實作的 08/27 20:56
→ cobrasgo:A.sort(lambda x, y: cmp(x["dataB"], y["dataB"])) 08/27 20:57
→ cobrasgo:不過cmp似乎有performance的問題 08/27 20:57
→ sbrhsieh:對,指定 cmp 的效率應 <= 指定 key filter 08/27 20:58