tru*_*fle 6 maps dictionary clojure duplicates
所以我有一个如下列表:
({:name "yellowtail", :quantity 2} {:name "tuna", :quantity 1}
{:name "albacore", :quantity 1} {:quantity 1, :name "tuna"})
Run Code Online (Sandbox Code Playgroud)
我的目标是搜索地图项目列表并查找重复项密钥,如果有重复项,则增加数量.所以在列表中我有两个出现的金枪鱼映射元素.我想删除一个,只是增加另一个的数量.所以结果应该是:
({:name "yellowtail", :quantity 2} {:name "tuna", :quantity 2}
{:name "albacore", :quantity 1} )
Run Code Online (Sandbox Code Playgroud)
随着:金枪鱼的数量增加到2.我试图使用recur来做到这一点没有成功,我不确定recur是否是一个很好的方向.有人能指出我正确的方向吗?
您可以group-by
:name
将您的元素,然后map
通过分组的集合汇总值.
像这样的东西
(->> your-list
(group-by :name)
(map (fn [[k v]]
{:name k :quantity (apply + (map :quantity v))})))
Run Code Online (Sandbox Code Playgroud)
PS我假设您需要对元素的数量求和,因为不清楚您需要增加什么.