无法根据嵌套字段对clojure中的MAP进行排序 [英] Unable to sort a MAP in clojure on the basis of nested fields

查看:150
本文介绍了无法根据嵌套字段对clojure中的MAP进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  {:Mawb {:user_val3,:col_nm1},
:HawbDate {:user_val ,:col_nm3},
:EtlBatchID {:user_val1,:col_nm2}}

输出应为:

  {:Mawb {:user_val3,:col_nm 1},
:EtlBatchID {:user_val1,:col_nm2},
:HawbDate {:user_val,:col_nm3}}



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

解决方案

尝试这个:

 (def m {:Mawb {:user_val3,:col_nm 1},
:HawbDate {:user_val,:col_nm3},
:EtlBatchID {:user_val1,:col_nm2}})

(sort-by(comp:col_nm second)m)
=> ([:Mawb {:user_val3,:col_nm1}]
[:EtlBatchID {:user_val1,:col_nm2}]
[:HawbDate {:user_val ,:col_nm3}])


I am trying to sort the below map( Clojure) on the basis of "col_nm" field, but unable to do so.

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

The output should be:

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

Can anyone help me, thanks in advance.

解决方案

Try this one:

(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中的MAP进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆