gpt4 book ai didi

dictionary - 如何在 clojure 中检查 map 中的重复项?

转载 作者:行者123 更新时间:2023-12-04 01:07:19 25 4
gpt4 key购买 nike

所以我有一个如下所示的列表:

({:name "yellowtail", :quantity 2} {:name "tuna", :quantity 1} 
{:name "albacore", :quantity 1} {:quantity 1, :name "tuna"})

我的目标是搜索 map 项目列表并找到重复的键,如果有重复,则增加数量。所以在列表中我有两个金枪鱼映射元素出现。我想删除一个,只增加另一个的数量。所以结果应该是:
({:name "yellowtail", :quantity 2} {:name "tuna", :quantity 2} 
{:name "albacore", :quantity 1} )

随着 :quantity of tuna 增加到 2。我尝试使用 recur 来做到这一点,但没有成功,我不确定 recur 是否是一个好的方向。有人能指出我正确的方向吗?

最佳答案

您可以 group-by :name您的元素,然后 map通过对值求和的分组集合。

像这样的东西

(->> your-list 
(group-by :name)
(map (fn [[k v]]
{:name k :quantity (apply + (map :quantity v))})))

附言我假设您需要对元素的数量求和,因为尚不清楚您究竟需要增加什么。

关于dictionary - 如何在 clojure 中检查 map 中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32449418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com