DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

Python 中dict的有序输出(排序)

Python中很长用的数据结构是dict,在使用的过程中总会遇到这样的问题:你想有序的遍历一个dict

需求一,无序遍历dict中的内容,实现方式如下:

 1 # !/ usr / local / bin / python
 2 MAP_TEST  =   {
 3              ' a ' : ' aa ' ,
 4              ' b ' : ' bb ' ,
 5              ' c ' : ' cc ' ,           
 6              ' d ' : ' dd ' ,
 7 }

 8 def main():
 9     for  i in MAP_TEST.keys():
10       print i + " : " + MAP_TEST[i]
11
12 if  __name__  ==   ' __main__ ' :
13     main()
14

 

需求二,有序遍历dict中的内容,但dict是无序的,所以要实现只能用list过渡

 1 # !/ usr / local / bin / python
 2 MAP_TEST  =   {
 3              ' a ' : ' aa ' ,
 4              ' b ' : ' bb ' ,
 5              ' c ' : ' cc ' ,           
 6              ' d ' : ' dd ' ,
 7 }

 8 def main():
 9  items  =  MAP_TEST.keys()
10  items.sort();
11      for  i in items:
12        print i + " : " + MAP_TEST[i]
13
14 if  __name__  ==   ' __main__ ' :
15     main()
16     
17
18

需求三,按照自定义的顺序排列,实现如下,在sortfunc中实现你自己的排序方法
本例实现了倒序排列

 1 # !/ usr / local / bin / python
 2 MAP_TEST  =   {
 3              ' a ' : ' aa ' ,
 4              ' b ' : ' bb ' ,
 5              ' c ' : ' cc ' ,           
 6              ' d ' : ' dd ' ,
 7 }

 8 def sortfunc(x,y):
 9        return  cmp(y,x);
10    
11 def main():
12    items  =  MAP_TEST.keys()
13    items.sort(sortfunc);
14     for  i in items:
15       print i + " : " + MAP_TEST[i]
16
17 if  __name__  ==   ' __main__ ' :
18     main()
19
20


说明:
在不通过版本的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

posted on 2006-11-09 11:14 dreamstone 阅读(10261) 评论(1)  编辑  收藏 所属分类: 片段

评论

# re: Python 中dict的有序输出(排序) 2012-04-05 14:49 疯子

要是要按照字典的value排序呢?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: