Clojure中两个列表之间的键上的过滤元素不匹配

蝗虫部落

我在Clojure中有两个地图向量

(def a [{:name "batman" :universe "DC" :email "[email protected]"}
        {:name "flash" :universe "DC" :email "[email protected]"}
        {:name "thor" :universe "MARVEL" :email "[email protected]"}])

(def b [{:name "batman" :universe "DC" :email "[email protected]"}
        {:name "flash" :universe "DC" :email "[email protected]"}
        {:name "thor" :universe "MARVEL" :email "[email protected]"}
        {:name "riddler" :universe "DC" :email "[email protected]"}])

:name两个列表中属性始终保持同步;即,batmanina也总是batman打开b

不过,我要做的是仅选择电子邮件不匹配的行。

(stuck-on-what-to-write-here)

=> ({:name "flash", :universe "DC", :email "[email protected]"})

如果我用

(filter #(not (contains? (set (map :email a)) (:email %))) b)

它返回2行,其中一行与之flash不匹配,而另一行与riddler因为..好吧,它不在a中,因此不匹配!

我需要怎么做才能获得闪光而不是骑手?

加尔德雷
(defn mismatch?
  "Returns true if there is any mismatch between corresponding items."
  [a b]
  (= (count (clojure.set/union (set a) (set b)))
     (max (count a) (count b))))

如果您想要一个特定的名称,则可以使用列表理解:

(defn get-mismatched-emails
  "Returns the name of any superheroes with inconsistent contact records."
  [a b]
  (for [i a j b
        :when (and (= (:name i) (:name j))
                   (not= (:email i) (:email j)))]
    (:name i)))

请注意,此函数效率很低,因为它必须比较两个列表之间的每个对组合。只需将数据结构更改为地图即可:

{"batman" {:universe "DC" :email "[email protected]"}
 "flash"  {:universe "DC" :email "[email protected]"}
 "thor"   {:universe "MARVEL" :email "[email protected]"}}

您宁可轻松地将所需内容扩展到更大的数据集。

(for [name (clojure.set/union (set (keys a))
                              (set (keys b)))
      :when (detect-mismatched-data (a name) (b name))]
  name)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个无序列表,并找出pyspark中哪些元素不匹配

来自分类Dev

从两个列表中过滤元素

来自分类Dev

在Clojure中过滤两个文本文件之间的匹配字符串

来自分类Dev

从具有两个元素的数组中获取与匹配元素不匹配的值

来自分类Dev

Python匹配两个列表之间的列表元素中的部分字符串

来自分类Dev

优化两个列表之间的元素明智模糊匹配

来自分类Dev

如何匹配Scala中两个列表中的元素?

来自分类Dev

计算两个列表中匹配元素的数量

来自分类Dev

返回列表中两个变量索引之间的元素

来自分类Dev

在列表中的两个元素之间创建链接

来自分类Dev

匹配列表的前两个元素

来自分类Dev

列表之间的两个公共元素

来自分类Dev

在python中的两个列表之间交换两个元素

来自分类Dev

Clojure-在哈希图向量中,返回两个键匹配的最低哈希图

来自分类Dev

获取两个大列表之间的所有不匹配元素

来自分类Dev

如何在两个列表之间找到校验和匹配项(但不在两个列表中)?

来自分类Dev

R匹配两个列表并找到匹配的元素

来自分类Dev

如何获得R中两个向量之间的元素的第n个匹配项?

来自分类Dev

根据两个键过滤字典列表

来自分类Dev

两个列表之间的公共元素并保留两个列表中元素的顺序

来自分类Dev

Java获取arraylist中两个元素之间的元素子列表

来自分类Dev

检测元素是否在python列表中的两个相等元素之间

来自分类Dev

如何在Python中匹配两个不同列表的第一个元素

来自分类Dev

检查两个列表中的元素

来自分类Dev

检查两个列表中的元素

来自分类Dev

查找两个列表之间的匹配值

来自分类Dev

如何返回两个列表之间的不匹配项

来自分类Dev

获取F#中两个整数列表之间的匹配数

来自分类Dev

循环文本以匹配C中两个链接列表之间的字符数

Related 相关文章

  1. 1

    比较两个无序列表,并找出pyspark中哪些元素不匹配

  2. 2

    从两个列表中过滤元素

  3. 3

    在Clojure中过滤两个文本文件之间的匹配字符串

  4. 4

    从具有两个元素的数组中获取与匹配元素不匹配的值

  5. 5

    Python匹配两个列表之间的列表元素中的部分字符串

  6. 6

    优化两个列表之间的元素明智模糊匹配

  7. 7

    如何匹配Scala中两个列表中的元素?

  8. 8

    计算两个列表中匹配元素的数量

  9. 9

    返回列表中两个变量索引之间的元素

  10. 10

    在列表中的两个元素之间创建链接

  11. 11

    匹配列表的前两个元素

  12. 12

    列表之间的两个公共元素

  13. 13

    在python中的两个列表之间交换两个元素

  14. 14

    Clojure-在哈希图向量中,返回两个键匹配的最低哈希图

  15. 15

    获取两个大列表之间的所有不匹配元素

  16. 16

    如何在两个列表之间找到校验和匹配项(但不在两个列表中)?

  17. 17

    R匹配两个列表并找到匹配的元素

  18. 18

    如何获得R中两个向量之间的元素的第n个匹配项?

  19. 19

    根据两个键过滤字典列表

  20. 20

    两个列表之间的公共元素并保留两个列表中元素的顺序

  21. 21

    Java获取arraylist中两个元素之间的元素子列表

  22. 22

    检测元素是否在python列表中的两个相等元素之间

  23. 23

    如何在Python中匹配两个不同列表的第一个元素

  24. 24

    检查两个列表中的元素

  25. 25

    检查两个列表中的元素

  26. 26

    查找两个列表之间的匹配值

  27. 27

    如何返回两个列表之间的不匹配项

  28. 28

    获取F#中两个整数列表之间的匹配数

  29. 29

    循环文本以匹配C中两个链接列表之间的字符数

热门标签

归档