看板 Python 關於我們 聯絡資訊
資料會像是 { order:12, id:1234, sn:123, date:20151212, data=[key, cmd, pack, unpack, realdata]} { order:13, id:1234, sn:124, date:20151212, data=[key, cmd, pack, unpack, realdata]} { order:14, id:1234, sn:122, date:20151212, data=[key, cmd, pack, unpack, realdata]} { order:15, id:2234, sn:123, date:20151212, data=[key, cmd, pack, unpack, realdata]} 之前學到的, 就只是排序一個 dict count key 的個數 d = {} [ d.__setitem__(L,1+d.get(L,0)) for L in item ] for key, value in sorted(d.iteritems(), key=lambda (k,v): (v,k)): print "%-20s: %s" % (value, key) 因為只有上面只有 key 排序, 還能理解 . 但今天如果有很多原素要排序, 請問要怎麼寫比較好 ? 先排 sn 再排 id, 再排 order, 之後要再排 data list 裡面的 cmd 之類的. 不知怎樣寫程式才能簡單一點 , 不然寫起來覺得程式碼好長 . -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.111.130 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1457764426.A.3E9.html ※ 編輯: zha0 (111.248.111.130), 03/12/2016 14:34:01 ※ 編輯: zha0 (111.248.111.130), 03/12/2016 14:35:12
uranusjr: 你可以把那個 lambda 抽出成一個獨立 function, 要寫多 03/12 14:46
uranusjr: 長隨你, 讀起來也比較方便 03/12 14:46
bigpigbigpig: 不考慮 namedtuple 嗎?這樣 sort() 比較容易撰寫 03/12 15:01
zha0: http://0rz.tw/87vZB 03/12 15:27
octantis: 學到了樓上的方法感覺不錯 03/12 15:37
zha0: 感謝 bigpigbigpig 獲得 namedtuple keywords 03/12 15:42