无法基于嵌套字段对clojure中的MAP进行排序

时间:2012-04-12 10:48:32

标签: clojure

我试图在“col_nm”字段的基础上对下面的地图(Clojure)进行排序,但无法这样做。

{:Mawb {:user_val "3", :col_nm "1"}, 
 :HawbDate {:user_val "", :col_nm "3"}, 
 :EtlBatchID {:user_val "1", :col_nm "2"}}

输出应为:

{:Mawb {:user_val "3", :col_nm "1"}, 
 :EtlBatchID {:user_val "1", :col_nm "2"}, 
 :HawbDate {:user_val "", :col_nm "3"} }

任何人都可以帮助我,提前谢谢。

1 个答案:

答案 0 :(得分:5)

试试这个:

(def m {:Mawb {:user_val "3", :col_nm "1"},
        :HawbDate {:user_val "", :col_nm "3"},
        :EtlBatchID {:user_val "1", :col_nm "2"}})

(sort-by (comp :col_nm second) m)
=> ([:Mawb {:user_val "3", :col_nm "1"}]
    [:EtlBatchID {:user_val "1", :col_nm "2"}]
    [:HawbDate {:user_val "", :col_nm "3"}])