【问题标题】:How can I retrieve the value of a key in a HashMap that is a list in Clojure?如何检索作为 Clojure 列表的 HashMap 中的键的值?
【发布时间】:2016-08-26 00:22:14
【问题描述】:

我正在寻找一个给定键的值,它是一个列表。

    (defn string-tuple [my-string]
      (partition 2 1 my-string))

    (defn split-and-frequent-tuple [lines]
      (frequencies (string-tuple lines)))

    (defn split-and-frequent [lines]
      (frequencies lines))

(defn string-split [my-string]
  (str/split my-string #" "))


    (def string-pairs (split-and-frequent-tuple (string-split "<s> I am Sam </s> <s> Sam I am </s> <s> I do not like green eggs and ham </s>")))

    ;; Calculate that bigram probability
    (println string-pairs)
    (println (string-pairs '(green eggs)))

基本上,字符串对计算诸如(绿色鸡蛋)之类的项目在文本中出现的频率。但是,当我尝试使用 (string-pairs '(green eggs)) 之类的方法检索密钥时,即使地图显示该密钥的值为 1,我总是会返回 nil

我只是想知道我哪里出错了,我已经尝试了所有:(

感谢您的宝贵时间

【问题讨论】:

    标签: string clojure hashmap


    【解决方案1】:

    当您使用println 显示值时,字符串和符号看起来相同,即使它们不相等。

    在调试时,使用prn 明确显示值,或使用pr-str 生成字符串prprn 将在println 调用中使用。

    这应该会给你正确的结果(如果向量和列表的内容相等,则它们在 Clojure 中是相等的)。

    (string-pairs ["green" "eggs"])
    

    【讨论】:

    • 天啊,非常感谢! :D 我会尽快接受的。
    • 使用 prn 的另一个参数:{":a 0" ":b 1"} 是一个有效的哈希映射,但 println 使它看起来完全不同(但也是有效的)。这不仅仅是理论上的问题,至少在我的代码中,包含空格的字符串经常出现在哈希映射中。
    猜你喜欢
    • 2016-12-30
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多