我有以下列表
({:Col1 {:type varchar :nullable true}} {:Col2 {:type varchar :nullable true}} {:Col3 {:type varchar :nullable false}})
并希望转换为以下内容
{:Col3 {:type varchar, :nullable false}, :Col1 {:type varchar, :nullable true}, Col2 {:type varchar, :nullable true}}
我正在使用以下代码。
(def a '({:Col1 {:type varchar :nullable true}} {:Col2 {:type varchar :nullable true}} {:Col3 {:type varchar :nullable false}}))
(apply hash-map (flatten (map (comp flatten seq) a)))
但是有更好的解决方案吗?
答案 0 :(得分:3)
另一种方法是使用merge:
(reduce merge
'({:Col1 {:type varchar :nullable true}} {:Col2 {:type varchar :nullable true}} {:Col3 {:type varchar :nullable false}}))
答案 1 :(得分:0)
除了Symfrog的回答,这个选项同样简短,但可能更容易理解:
(apply merge a)
其中a
被定义为一系列地图,如您的问题所示。
您也可以使用
(reduce conj a)
大致是Clojure来源中的merge
is defined。