Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法根据嵌套字段对clojure中的映射进行排序_Clojure - Fatal编程技术网

无法根据嵌套字段对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"}

我试图根据“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"} }
有人能帮我吗,提前谢谢。

试试这个:

(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
的一种低效方法(当用作谓词时)。