2016-04-16 45 views
0

我想返回地圖中出現的所有關鍵字。例如:如何返回地圖中的所有關鍵字

{:a 1 :d 4 :e 4} 

我想得到(:a:d:e)。我的代碼是

(get {:a 1 :d 4 :e 4} :keywords) 

它返回nil。那麼如何解決它?

+0

如果您的地圖是'{:a:b,:d 4,5:e,7 [8:f:g]}',您會喜歡什麼輸出? –

+0

從地圖上尋找*關鍵字*是毫無意義的。地圖的「鍵」可以是任何值 - 數字,字符串,任何類型的集合。常常選擇關鍵詞是因爲它們是易於查找的文字。您甚至可以將函數用作鍵,但這很少用,因爲只有相同時函數纔是相同的。 – Thumbnail

回答

9

我想你想從你的地圖中獲得所有keys。你可以這樣做,使用:

(keys {:a 1, :d 4, :e 4} 
;; => (:a :d :e) 

如果你想,當他們出現在地圖的鍵,你需要filter只有符合keyword?謂詞來獲取所有關鍵字

(filter keyword? (keys {:a 1, 'd 4, :e 4, "f" 5})) 
;; => (:a :e) 

同樣對於來自地圖值的關鍵字:

(filter keyword? (vals {:a :b, "c" :d, 4 "e", 5 'f})) 
;; => (:b :d) 
相關問題