Clojure将多个地图合并为一个地图 [英] Clojure merge multiple map into a single map
本文介绍了Clojure将多个地图合并为一个地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下地图列表
({"child.search" {:roles #{"ROLE_ADM_UNSUBSCRIBE_SUBSCRIPTION" "ROLE_ADM_SEARCH_SUBSCRIPTION" "ROLE_ADM_VIEW_SUBSCRIPTION"}},
"child.cc.search" {:roles #{"ROLE_ADM_CC_SEARCH_SUBSCRIPTION" "ROLE_ADM_CC_VIEW_SUBSCRIPTION"}}}
{"child.abusereport" {:roles #{"ROLE_ADM_ABUSE_RPT"}},
"child.manualfiltering" {:roles #{"ROLE_ADM_MANUAL_FILTERING_RPT"}}}
{"child.assigned.advertisement" {:roles #{"ROLE_ADM_CREATE_ADVERTISING"}},
"child.manage.advertisement" {:roles #{"ROLE_ADM_LIST_ADVERTISING"}}})
我需要一张像下面的地图.
I need to have a single map like following.
{"child.search" {:roles #{"ROLE_ADM_UNSUBSCRIBE_SUBSCRIPTION" "ROLE_ADM_SEARCH_SUBSCRIPTION" "ROLE_ADM_VIEW_SUBSCRIPTION"}}
"child.cc.search" {:roles #{"ROLE_ADM_CC_SEARCH_SUBSCRIPTION" "ROLE_ADM_CC_VIEW_SUBSCRIPTION"}}
"child.abusereport" {:roles #{"ROLE_ADM_ABUSE_RPT"}}
"child.manualfiltering" {:roles #{"ROLE_ADM_MANUAL_FILTERING_RPT"}}
"child.assigned.advertisement" {:roles #{"ROLE_ADM_CREATE_ADVERTISING"}}
"child.manage.advertisement" {:roles #{"ROLE_ADM_LIST_ADVERTISING"}}}
我该怎么办?
推荐答案
您可以使用" {} 作为第一个参数:
You can use the "into" function, and supply an empty map {}
as the first argument:
(into {} map-list)
这是我的REPL会话的输出;我将您的代码复制到两个变量"map-list"和"single-map"(Clojure 1.3.0)中:
Here's the output from my REPL session; I copied your code into two vars 'map-list' and 'single-map' (Clojure 1.3.0):
(def map-list '({"child.search" {:roles #{"ROLE_ADM_UNSUBSCRIBE_SUBSCRIPTION" "ROLE_ADM_SEARCH_SUBSCRIPTION" "ROLE_ADM_VIEW_SUBSCRIPTION"}},
"child.cc.search" {:roles #{"ROLE_ADM_CC_SEARCH_SUBSCRIPTION" "ROLE_ADM_CC_VIEW_SUBSCRIPTION"}}}
{"child.abusereport" {:roles #{"ROLE_ADM_ABUSE_RPT"}},
"child.manualfiltering" {:roles #{"ROLE_ADM_MANUAL_FILTERING_RPT"}}}
{"child.assigned.advertisement" {:roles #{"ROLE_ADM_CREATE_ADVERTISING"}},
"child.manage.advertisement" {:roles #{"ROLE_ADM_LIST_ADVERTISING"}}}))
#'user/map-list
user=>
(def single-map {"child.search" {:roles #{"ROLE_ADM_UNSUBSCRIBE_SUBSCRIPTION" "ROLE_ADM_SEARCH_SUBSCRIPTION" "ROLE_ADM_VIEW_SUBSCRIPTION"}}
"child.cc.search" {:roles #{"ROLE_ADM_CC_SEARCH_SUBSCRIPTION" "ROLE_ADM_CC_VIEW_SUBSCRIPTION"}}
"child.abusereport" {:roles #{"ROLE_ADM_ABUSE_RPT"}}
"child.manualfiltering" {:roles #{"ROLE_ADM_MANUAL_FILTERING_RPT"}}
"child.assigned.advertisement" {:roles #{"ROLE_ADM_CREATE_ADVERTISING"}}
"child.manage.advertisement" {:roles #{"ROLE_ADM_LIST_ADVERTISING"}}})
#'user/single-map
user=>
;; Check to see if we have the desired result
(= (into {} map-list)
single-map)
true
这篇关于Clojure将多个地图合并为一个地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文