我有一个clojure函数,它返回一个1键映射的序列。我想将这些地图合并成一张地图;然而,如果有相同的密钥的地图,我不想覆盖这些值,只能将它们组合成一个向量。 merge
似乎被覆盖,而merge-with
似乎严重扭曲了这种类型。合并映射而不覆盖键
我:
({:foo "hello"}
{:bar "world"}
{:baz "!!!"}
{:ball {:a "abc", :b "123"}}
{:ball {:a "def", :b "456"}}
{:ball {:a "ghi", :b "789"}})
我想:
{:foo "hello"
:bar "world"
:baz "!!!"
:ball [{:a "abc", :b "123"} {:a "def", :b "456"} {:a "ghi", :b "789"}]}
感谢。
这是可能的,但我会退后一步,问为什么?根据是否有重复,有一个地图的值可以是标量或矢量的用途是什么?具有一致的值类型的地图将更容易处理。 – Alex 2014-10-29 19:44:10
我正在处理一个java后端。它的类型不是我的控制范围。 [Clojure食谱]的 – 2014-10-29 19:57:58
[本节](https://github.com/clojure-cookbook/clojure-cookbook/blob/master/02_composite-data/2-22_multiple-values/2-22_multiple-values.asciidoc) (https://duckduckgo.com/l/?kh=-1&uddg=http%3A%2F%2Fclojure-cookbook.com%2F)处理在同一张地图上有单个和多个值。 – Thumbnail 2014-10-30 10:11:10