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

作者: zha0 (這個帳號是掛網用)   2016-03-12 14:33:43
資料會像是
{ 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 之類的.
不知怎樣寫程式才能簡單一點 , 不然寫起來覺得程式碼好長 .
作者: uranusjr (←這人是超級笨蛋)   2016-03-12 14:46:00
你可以把那個 lambda 抽出成一個獨立 function, 要寫多長隨你, 讀起來也比較方便
作者: bigpigbigpig (To littlepig with love)   2016-03-12 15:01:00
不考慮 namedtuple 嗎?這樣 sort() 比較容易撰寫
作者: zha0 (這個帳號是掛網用)   2016-03-12 15:27:00
作者: octantis (@.@)   2016-03-12 15:37:00
學到了樓上的方法感覺不錯
作者: zha0 (這個帳號是掛網用)   2016-03-12 15:42:00
感謝 bigpigbigpig 獲得 namedtuple keywords

Links booklink

Contact Us: admin [ a t ] ucptt.com