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的默認順序是不同的,編碼時,特別是修改或者二次開發的時候,
          應注意這個情況??赡軙斐蒪ug
          例如一下四個字段,在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 閱讀(10273) 評論(1)  編輯  收藏 所屬分類: 片段

          評論

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

          要是要按照字典的value排序呢?  回復  更多評論   

          主站蜘蛛池模板: 黎城县| 文安县| 九寨沟县| 宣武区| 买车| 河西区| 平乡县| 新民市| 赤壁市| 佳木斯市| 肇东市| 万盛区| 铜梁县| 漳浦县| 外汇| 潜江市| 牙克石市| 陆丰市| 航空| 禹州市| 五常市| 云南省| 临海市| 神木县| 邓州市| 布拖县| 安新县| 抚松县| 镇平县| 汝州市| 徐闻县| 扶绥县| 金阳县| 江陵县| 台江县| 三台县| 郁南县| 嘉鱼县| 睢宁县| 墨江| 丹江口市|