[問題] 排序多個 dict 的集合

看板Python作者 (這個帳號是掛網用)時間9年前 (2016/03/12 14:33), 9年前編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
資料會像是 { 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

03/12 14:46, , 1F
你可以把那個 lambda 抽出成一個獨立 function, 要寫多
03/12 14:46, 1F

03/12 14:46, , 2F
長隨你, 讀起來也比較方便
03/12 14:46, 2F

03/12 15:01, , 3F
不考慮 namedtuple 嗎?這樣 sort() 比較容易撰寫
03/12 15:01, 3F

03/12 15:27, , 4F
03/12 15:27, 4F

03/12 15:37, , 5F
學到了樓上的方法感覺不錯
03/12 15:37, 5F

03/12 15:42, , 6F
感謝 bigpigbigpig 獲得 namedtuple keywords
03/12 15:42, 6F
文章代碼(AID): #1MuxXAFf (Python)
文章代碼(AID): #1MuxXAFf (Python)