[问题] 排序多个 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