【发布时间】:2019-12-22 06:28:15
【问题描述】:
我有 2 个地图向量:employ-base 和employ1。我想合并employ1 的优先级高于employ-base 的2 个向量。因此,如果employ1 有记录使用它们,则使用来自employ-base 的记录。在 clojure 中最好的方法是什么?
来自:
(def employ-base
[{:id 1 :name "Aaron" :income 0}
{:id 2 :name "Ben" :income 0}
{:id 3 :name "Carry" :income 0}])
(def employ1
[{:id 1 :name "Aaron" :income 1000}
{:id 3 :name "Carry" :income 2000}])
到:
(def employ1
[{:id 1 :name "Aaron" :income 1000}
{:id 2 :name "Ben" :income 0}
{:id 3 :name "Carry" :income 2000}])
【问题讨论】:
-
您最近的两个问题(实际上,现在我看,您最近提出的另外两个问题)都遵循相同的主题:事情很困难,因为您使用了错误的数据结构。您可以说出来,因为您收到的问题答案涉及立即将数据放入地图中,以 id 为键,这是一种更方便的格式。如果你事先这样做,各种转换都会变得容易得多。
-
我试图简化问题,真正的地图没有 ID。地图中没有唯一的键。类似于: (defemploy1 [{:fname "Aaron" :lname "Smith" :income 1000} {:fname "Carry" :lname "Smith" :income 2000}])
-
在您的问题中,“如果employ1 有记录”这句话不清楚。 “有”是什么意思?他们平等吗?只有
:id相等吗?:id和:name的组合是否相等?或者从您的评论中,它是:fname和lname的组合,还是其中之一?根据您的需要,解决方案的外观会有所不同。
标签: clojure