list - 如何在 Clojure 中过滤向量列表?
问题描述
我是 Clojure 的新手,正在学习 Clojure 中各种数据结构的属性。在这里,我有一个向量列表,如下所示:
(["1" "Christiano Ronaldo" "Portugal" "35"]
["2" "Lionel Messi" "Argentina" "32"]
["3" "Zinedine Zidane" "France" "47"])
其中每个向量的第一个元素是 id。如何根据 id 从列表中过滤掉单个向量?例如,id = 1
应该返回
["1" "Christiano Ronaldo" "Portugal" "35"]
我尝试在嵌套地图上做同样的事情:
(def footballers
[
{:id 1 :name "Christiano Ronaldo" :country "Portugal" :age 35}
{:id 2 :name "Lionel Messi" :country "Argentina" :age 32}
{:id 3 :name "Zinedine Zidane" :country "France" :age 47}
]
)
并成功使用该filter
功能
(filter #(= (:id %) 1) footballers)
结果:
({:id 1, :name "Christiano Ronaldo", :country "Portugal", :age 35})
如何使用filter
函数在向量列表中执行相同操作?
解决方案
(filterv #(= "1" (first %)) footballers) ; or `filter`
;=> [["1" "Christiano Ronaldo" "Portugal" "35"]] ; vector containing 1 vector
请参阅此文档列表。
推荐阅读
- maven - 如何将附加参数从 maven build 传递到 npm
- javascript - scrollIntoView() 导致导航栏消失,直到页面刷新
- html - 传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串
- sql - 表无法正确连接
- c# - 无法理解如何设置 time_window Google or-tools
- ruby-on-rails - 你如何在 Rails 中使用 RSpec 测试处理错误请求?
- php - 使用作曲家命令
- javascript - 我如何将 HTTP 请求发送到另一个站点并返回验证码以供客户解决?
- aws-lambda - AWS codepipeline - 如何更新 lambda 的函数代码?
- google-cloud-platform - 如何将 GCP 服务帐户 key.json 内容传递到 Terraform Cloud 而不在 VCS 中提交?