作者zha0 (这个帐号是挂网用)
看板Python
标题[问题] 排序多个 dict 的集合
时间Sat Mar 12 14:33:43 2016
资料会像是
{ 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://webptt.com/cn.aspx?n=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
1F:→ uranusjr: 你可以把那个 lambda 抽出成一个独立 function, 要写多 03/12 14:46
2F:→ uranusjr: 长随你, 读起来也比较方便 03/12 14:46
3F:→ bigpigbigpig: 不考虑 namedtuple 吗?这样 sort() 比较容易撰写 03/12 15:01
5F:→ octantis: 学到了楼上的方法感觉不错 03/12 15:37
6F:→ zha0: 感谢 bigpigbigpig 获得 namedtuple keywords 03/12 15:42