clojure - 在 clojure 中同时使用 assoc 和 dissoc 转换地图
问题描述
我有一张如下图所示的地图。我正在从一个原子数据库中获取信息。现在我想在这里转换数据结构:
(def my-map [{:db/id #object[Object 56536887900242005],
:height 630,
:distance 1474.1,
:coordinates [-26.65622109697031 30.48401767312403],
:location #:location{:id 1}}
{:db/id #object[Object 56536887900242006],
:height 22075,
:distance 1503.2,
:coordinates [-26.65622109697031 30.48401767312403],
:location #:location{:id 2}}
{:db/id #object[Object 56536887900242007],
:height 24248,
:distance 1695.6,
:coordinates [-26.662030943549 30.25648873549992],
:location #:location{:id 3}})
看起来像这样
{1 {:height 630, :distance 1474.1,:coordinates [-26.65622109697031 30.48401767312403]}
2 {:height 22075, :distance 1503.2,:coordinates [-26.65622109697031 30.48401767312403]}
3 {:height 24248, :distance 1695.6,:coordinates [-26.65622109697031 30.48401767312403]}}
我想从中拉出 1,#:location{:id 1}
然后我将assoc
与
{:height 22075, :distance 1503.2,:coordinates [-26.65622109697031 30.48401767312403]}
贝娄我有返回上述内容的代码,但我不知道如何将assoc
其输入,:id
而且我也不知道如何获取 id,因为数据有#
(map #(dissoc % :db/id :location ) my-map)
解决方案
无论如何,我plumbing.core
在每个项目中都使用,如果你也这样做,那么这个解决方案可能会吸引你。
(grouped-map
(fn-> :location :location/id)
(fn-> (dissoc :location :db/id))
my-map)
推荐阅读
- import - Airflow DAG 从哪里获得它的依赖关系?
- lua - 如何修复 Lua 中的“堆栈溢出”错误?
- javascript - 如何使用 Gumroad 的监听器从他们的覆盖重定向到 url
- java - Java:实现接口和返回接口的函数
- azure-resource-manager - 您应该如何在 Visual Studio 中本地验证链接模板?
- laravel - 无法通过 laravel 发布到 Facebook 用户的墙上
- javascript - 有没有办法在 fetch 函数的范围之外访问我的 JSON 文件?
- python - 将日期时间中的数据框列值与整数进行比较?
- python - 在 Confluence API 中保留新行
- elasticsearch - 如何从弹性搜索中提取数据并在 Splunk 中查询数据?