【发布时间】:2018-05-09 19:53:39
【问题描述】:
我需要转换以下数据:
[{["A" 1] [{:ms "A", :s 1, :v 15}], ["A" 2] [{:ms "A", :s 2, :v 18}], ["A" 4] [{:ms "A", :s 4, :v 19}]}
{["A" 1] [{:ms "A", :s 1, :v2 5}], ["A" 2] [{:ms "A", :s 2, :v2 8}], ["B" 4] [{:ms "B", :s 4, :v2 9}]}]
到:
[{:ms "A", :s 1, :v 15, :v2 5} {:ms "A", :s 2, :v 18, :v2 8} {:ms "A", :s 4, :v 19} {:ms "B", :s 4, :v2 9}]
我正在努力实现,任何帮助将不胜感激:)
【问题讨论】:
-
我得到了 99% 的答案,然后我意识到你的最后两张地图打破了这种模式。以下是我写的答案:gist.github.com/carcigenicate/d5c766a0407def6ac81cb6775212b12e 请注意最终结果并不完全正确。不知道如何克服这个(太早了:/)。希望有人能给你一个更完整的答案。
-
这样的东西应该可以工作:
(map (partial apply merge) (vals (apply merge-with concat data)))=>({:ms "A", :s 1, :v 15, :v2 5} {:ms "A", :s 2, :v 18, :v2 8} {:ms "A", :s 4, :v 19} {:ms "B", :s 4, :v2 9})
标签: merge clojure group-by reduce