2016-08-13 117 views
0

所以我試圖創建一個哈希映射,其中每個鍵都是板上的一個項目。Clojure構建2D哈希映射

{[0 0] -1,[0 1] -1,[0 2] -1,[0 3] -1,[0 4] -1,[0 5] -1, 0 1] -1,[1 2] -1,[0 7] -1, 1 3] -1, [1 4] -1,[1 5] -1,[1 6] -1,[1 7] -1,[1 8] -1,[1 9] -1, 2 0] -1, [2 1] -1,[2 2] -1,[2 3] -1,[2 4] -1,[2 5] -1,[2 6] -1, 2 7] -1, [2 8] -1,[2 9] -1,[3 0] -1,[3 1] -1,[3 2] -1,[3 3] -1, 3 4] -1, [3 5] -1,[3 6] -1,[3 7] -1,[3 8] -1,[3 9] -1,[4 0] -1, 4 1] -1, [4 2] -1,[4 3] -1,[4 4] -1,[4 5] -1,[4 6] -1,[4 7] -1, 4 8] -1, [4 9] -1,[5 0] -1,[5 1] -1,[5 2] -1,[5 3] -1,[5 4] -1, 5 5] -1, [5 6 ] -1,[5 7] -1,[5 8] -1,[5 9] -1,[6 0] -1,[6 1] -1,[6 2] -1, [6 3 ] -1,[6 4] -1,[6 5] -1,[6 6] -1,[6 7] -1,[6 8] -1,[6 9] -1, [7 0 ] -1,[7 1] -1,[7 2] -1,[7 3] -1,[7 4] -1,[7 5] -1,[7 6] -1, [7 7 ] -1,[7 8] -1,[7 9] -1,[8 0] -1,[8 1] -1,[8 2] -1,[8 3] -1, [8 4 ] 1,[8 5] -1,[8 6] -1,[8 7] -1,[8 8] -1,[8 9] -1,[9 0] -1, [9 1 ] -1,[9 2] -1,[9 3] -1,[9 4] -1,[9 5] -1,[9 6] -1,[9 7] -1, [9 8 ] -1,[9 9] -1}

到目前爲止,我有

(zipmap (for [x (range 10) y (range 10)] [x y]) (repeat -1)) 

如果我想要的關鍵字排序:

(into (sorted-map) (zipmap (for [x (range 10) y (range 10)] [x y]) (repeat -1))) 

在Python我能想出以下字典解析:

board = {(x, y): -1 for x in range(5) for y in range(5)} 

我想知道如果我可以用Clojure這是做類似的事情更可讀/比我目前的做法有效

回答

1

如果你想把他們放在一起鍵和列表理解裏面的值,你可以這樣做:

(into {} (for [x (range 10) y (range 10)] [[x y] -1])) 

如果你想有一個排序的地圖,你可以簡單地更換{}(sorted-map)

(into (sorted-map) (for [x (range 10) y (range 10)] [[x y] -1]))