【问题标题】:Contains map in a list of maps [duplicate]包含地图列表中的地图[重复]
【发布时间】:2019-05-23 22:58:35
【问题描述】:

我有一个地图列表,我需要知道此列表中是否包含其他地图:

地图列表: [{:a 1} {:a 2} {:a 3}]

我的地图: {:a 2}

预期输出: true

我曾尝试使用包含但不起作用。 我想出了一个解决方案,但我认为它不是一个好的解决方案:

(map 
   (fn [x] 
      (if (= x {:a 1}) 
         true 
         false))
   [{:a 1} {:a 2} {:a 3}])

这段代码的结果我得到了一个真假列表,我需要看看这个列表中是否包含一个真。

所以我的问题是,是否存在某种更容易验证地图列表中是否存在地图的方式?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    我认为这个问题可以概括为“我如何判断一个序列是否包含一个值?” some 很适合这个:

    (some pred coll)
    

    它通过coll 的每一项调用它来返回来自pred 的第一个逻辑真值。

    例如,谓词可以是一个简单的相等检查:

    user=> (some #(= % {:foo 1})
                 [{:foo 1} {:foo 2}])
    true
    

    将集合用作谓词也很常见:

    一个常见的习惯用法是使用集合作为 pred,例如 如果:fred 在序列中,这将返回:fred,否则为零: (some #{:fred} coll)

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 2021-06-29
      • 2020-01-25
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多