我有一些数据,如下所示。
(def my-data
{1 {:x 63 :y 14 :z [30 26]}
2 {:x 22 :y 15 :z [32 66]}
3 {:x 24 :y 16 :z [38 40]}})
我要遍历 my-data 以得到以下结果:
1
2
3
这是我到目前为止所做的
(println (-> (seq my-data)(ffirst ,,,)
和我的结果
1
答案 0 :(得分:1)
你去吧:
(println (keys my-data))
答案 1 :(得分:1)
如果要在不同的行中打印每个键,则可以使用以下任意一个:
(doseq [item (keys my-data)]
(println item))
(run! println (keys my-data))
答案 2 :(得分:0)
不受欢迎的答案:这不适用于较大的地图。小地图是有序的(插入顺序),但是大地图会切换类型,并且不再排序/排序。因此,“第一个”不再有意义。
user=> (type (zipmap (range 8) (range 8)))
; => #<Class@34f7234e clojure.lang.PersistentArrayMap>
user=> (take 8 (keys (zipmap (range 8) (range 8))))
; => (0 1 2 3 4 5 6 7)
user=> (type (zipmap (range 9) (range 9)))
; => #<Class@45dd4eda clojure.lang.PersistentHashMap>
user=> (take 8 (keys (zipmap (range 9) (range 9))))
; => (0 7 1 4 6 3 2 5)
如果通过sorted-map
或sorted-map-by
进行匹配,则对其他较大的地图都是正确的,如果对键进行排序可以解决问题。如果需要订购,最好使用向量载体。