Карта индексов с буквами в clojure - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь отобразить индексы букв в строке txt в хэш-карте, для этого я попытался

(let[
indices (map #(hash-map (keyword %1) %2) txt (range (count txt)))]

, но получаю что-то вроде

({nil \V} {nil \a} {nil \d} {nil \e} {nil \r} {nil \space} {nil \s} {nil \a} {nil \i} {nil \d} {nil \:} {nil \space} {nil \N} {nil \o} {nil \,} {nil \space} {nil \I} {nil \space} {nil \a} {nil \m} {nil \space} {nil \y} {nil \o} {nil \u} {nil \r} {nil \space} {nil \f} {nil \a} {nil \t} {nil \h} {nil \e} {nil \r} {nil \!})

пока я хочу

({:0 \V} {:1 \a} ....

1 Ответ

2 голосов
/ 24 марта 2020

keyword возвращает nil для числовых c аргументов, поэтому вам нужно сначала преобразовать индексы в строки:

(map #(hash-map (keyword (str %1)) %2)
  (range (count txt))
  txt)

или вы можете использовать map-indexed:

(map-indexed (fn [idx e] {(keyword (str idx)) e}) txt)
...