我正在尝试使用clojure将多个地图合并到一个地图中.
输入
{:a 1 :b "a"}
{:a 2 :b "b"}
{:a 3 :b "c"}
{:a 4 :b "a"}
Run Code Online (Sandbox Code Playgroud)
预期
{:a #{1,2,3,4}, :b #{"a" "b" "c"}}
Run Code Online (Sandbox Code Playgroud)
每个键的值将转换为原始映射中的一组值.
我使用merge-with,使用包含空集的预构建结构:
(def data [{:a 1 :b "a"}
{:a 2 :b "b"}
{:a 3 :b "c"}
{:a 4 :b "a"}])
(let [base {:a #{} :b #{}}]
(apply merge-with conj base data))
=> {:a #{1 2 3 4}, :b #{"a" "b" "c"}}
Run Code Online (Sandbox Code Playgroud)
在基本映射中使用空集的技巧是conj具有要处理的具体对象,因此可以正常工作.
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |