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 閱讀(10279) 評論(1)  編輯  收藏 所屬分類: 片段

          評論

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

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

          主站蜘蛛池模板: 阿合奇县| 融水| 平和县| 松桃| 泸定县| 阳春市| 渝中区| 廉江市| 海伦市| 绍兴市| 汉中市| 青田县| 济源市| 兰西县| 沙田区| 溆浦县| 蒙自县| 邓州市| 晋州市| 内江市| 汕尾市| 孝义市| 阿拉善右旗| 江陵县| 贵州省| 阳城县| 阿拉尔市| 新丰县| 满城县| 兴宁市| 咸阳市| 明光市| 惠州市| 元氏县| 铅山县| 崇明县| 恩平市| 南丰县| 沂水县| 新巴尔虎右旗| 海盐县|