Python 中dict的有序输出(排序)
Python中很长用的数据结构是dict,在使用的过程中总会遇到这样的问题:你想有序的遍历一个dict需求一,无序遍历dict中的内容,实现方式如下:
1http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif#!/usr/local/bin/python
2http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://dreamstone.iteye.com/Images/OutliningIndicators/ContractedBlock.gifMAP_TEST = http://dreamstone.iteye.com/Images/dot.gif{
3http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'a':'aa',
4http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'b':'bb',
5http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'c':'cc',
6http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'd':'dd',
7http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
8http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifdef main():
9http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif for i in MAP_TEST.keys():
10http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif print i+":"+MAP_TEST
11http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
12http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifif __name__ == '__main__':
13http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif main()
14http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
需求二,有序遍历dict中的内容,但dict是无序的,所以要实现只能用list过渡
1http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif#!/usr/local/bin/python
2http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://dreamstone.iteye.com/Images/OutliningIndicators/ContractedBlock.gifMAP_TEST = http://dreamstone.iteye.com/Images/dot.gif{
3http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'a':'aa',
4http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'b':'bb',
5http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'c':'cc',
6http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'd':'dd',
7http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
8http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifdef main():
9http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif items = MAP_TEST.keys()
10http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif items.sort();
11http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif for i in items:
12http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif print i+":"+MAP_TEST
13http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
14http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifif __name__ == '__main__':
15http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif main()
16http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
17http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
18http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
需求三,按照自定义的顺序排列,实现如下,在sortfunc中实现你自己的排序方法
本例实现了倒序排列
1http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif#!/usr/local/bin/python
2http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://dreamstone.iteye.com/Images/OutliningIndicators/ContractedBlock.gifMAP_TEST = http://dreamstone.iteye.com/Images/dot.gif{
3http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'a':'aa',
4http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'b':'bb',
5http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'c':'cc',
6http://dreamstone.iteye.com/Images/OutliningIndicators/InBlock.gif 'd':'dd',
7http://dreamstone.iteye.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
8http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifdef sortfunc(x,y):
9http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif return cmp(y,x);
10http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
11http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifdef main():
12http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif items = MAP_TEST.keys()
13http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif items.sort(sortfunc);
14http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif for i in items:
15http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif print i+":"+MAP_TEST
16http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
17http://dreamstone.iteye.com/Images/OutliningIndicators/None.gifif __name__ == '__main__':
18http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif main()
19http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
20http://dreamstone.iteye.com/Images/OutliningIndicators/None.gif
说明:
在不通过版本的python中dict的默认顺序是不同的,编码时,特别是修改或者二次开发的时候,
应注意这个情况。可能会造成bug
例如一下四个字段,在1.5 2.2.3 2.4.3中排序不同,分别如下
1.5:
edifact
flat-encoded
vessel
flat-decoded
2.2.3:
flat-decoded
vessel
flat-encoded
edifact
Python 2.4.3
edifact
flat-decoded
flat-encoded
vessel
页:
[1]