如何检索Clojure中列表中的HashMap中的键的值?

问题描述:

我正在寻找检索给定的关键是一个列表中的值。如何检索Clojure中列表中的HashMap中的键的值?

(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

我只是想知道我错了,我用尽了一切:(

感谢您的时间

当您使用println显示值,字符串和符号看起来是一样的,即使他们不平等。

当你正在调试,使用prn它明确地显示数值,或使用pr-str生成字符串prprn会用,你println调用中。

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

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

OMG,非常感谢你! :D我会尽快接受。 –

+1

使用prn的另一个参数:'{“:a 0”“:b 1”}'是一个有效的哈希映射,但println使它看起来像完全不同(但也是有效的)。这不仅仅是一个理论上的问题,至少在我的代码中,包含空格的字符串在哈希映射中非常有规律地出现。 – noisesmith