无法根据嵌套字段对clojure中的映射进行排序
我试图根据“col_nm”字段对下面的地图(Clojure)进行排序,但无法这样做无法根据嵌套字段对clojure中的映射进行排序,clojure,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"}
{: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"} }
有人能帮我吗,提前谢谢。试试这个:
(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"}])
clojure中的映射没有顺序,除了由
排序映射创建的映射之外,甚至那些映射也只按键排序,不按值排序。工作非常完美!!除了排序之外还有一个查询-是否有内置函数或根据嵌套查询的条件删除查询的快捷方式。例如,对于这个映射{:Mawb{:user_val“3”,“col_nm”1},:HawbDate{:user_val”,“col_nm”3},:EtlBatchID{:user_val“1”,“col_nm”}如果“col_nm”字段是空的,那么输出应该是{:Mawb{:user_val“3”,“col u nm”1},:HawbDate{:user_val“1”,:col col nm”3}Avi(comp pos?count)
只是写seq
的一种低效方法(当用作谓词时)。