Дано:Полное внешнее объединение двух последовательностей карт в Clojure
(def seq1 ({:id 1 :val 10} {:id 2 :val 20}))
(def seq2 ({:id 1 :val 12} {:id 3 :val 30}))
В пределах каждой последовательности, значение :id
гарантировано быть уникальным в этой последовательности, хотя и не обязательно упорядочено.
Как эти две последовательности карт могут быть соединены ключом :id
, чтобы результат был таким, как показано?
{1 [{:id 1 :val 10} {:id 1 :val 12}],
2 [{:id 2 :val 20} nil ],
3 [nil {:id 3 :val 30}]}
Конечный результат - карта пар. Это похоже на полное внешнее соединение, где в выход включено не только пересечение, но и разность двух наборов.
Что вы пробовали? Это не сложная задача алгоритмически, и вы можете помочь вам в подходе, который вы пробовали, это поможет вам больше с будущими проблемами, чем просто дать полный ответ на этот вопрос. – amalloy
Существует также clojure.data/diff, который может стать хорошим началом для преобразования. – ClojureMostly
Хотя 'clojure.data/diff' не возвращает результаты в запрошенной форме OP, она возвращает ту же информацию - или, по крайней мере, информацию, которая довольно тривиальна для преобразования в то, что хочет OP. Я чувствую, что ваш комментарий должен быть сделан в ответ, Ванесса, поскольку он отвечает на общую проблему, из которой OP является экземпляром. Я проголосую за это. (Он отвечает на вопрос, который я имел в виду, когда я пришел на эту страницу.) Если 'clojure.data/diff' действительно не является подходящим ответом на этот вопрос, тогда я задам новый вопрос, и вы можете ответить. – Mars