2017-09-01 58 views
2

例如在地圖:Clojure幽靈:如何找到具有特定值的地圖鍵?

{"test-1" 23, 
"test-2" 456, 
"test-3" 23} 

如何找到具有價值23鑰匙?

+0

您是否需要幽靈輸入?它不是深層嵌套的結構。 –

+2

那麼這也可能是一個簡單的例子,雖然沒有幽靈很容易做到這一點,但對許多微不足道的數據結構和幽靈來說也是如此。然而,問題本身是明確的,如果只缺少一些「我已經嘗試」顯示OP的優點。 – cfrick

回答

2

如果你想找到使用幽靈什麼的,最好是用幽靈/選擇

(use 'com.rpl.specter)  

(select [ALL #(= (second %) 23) FIRST] 
    {"test-1" 23, 
    "test-2" 456, 
    "test-3" 23}) 
+0

這正是我期待和期待的那種解決方案!比其他人更優雅。 – sumek

6

我認爲你不需要幽靈來做到這一點,只是按價值過濾。即:

(->> {:key-1 10 
     :key-2 20 
     :key-3 10} 
     (filter (fn [[k v]] (= v 10))) 
     (map first)) 
==> [:key-1 :key-3] 

與幽靈一種解決方案是:

(keys (specter/setval [specter/MAP-VALS #(not= 10 %)] 
         specter/NONE 
         {:key-1 10 
         :key-2 20 
         :key-3 10})) 
+1

您實際上並不需要'seq',因爲過濾器無論如何都會輸入它的輸入。 –

+0

是的,你是對的 –

相關問題