我有一個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