What you have there isn't a keyword list, it is just a list with every odd element representing a key and every even element representing a value.
The difference is:
[:topic_id, "can't be blank", :created_by, "can't be blank"] # List
[topic_id: "can't be blank", created_by: "can't be blank"] # Keyword List
A keyword list can be turned into a map using Enum.into/2
Enum.into([topic_id: "can't be blank", created_by: "can't be blank"], %{})
Since your data structure is a list, you can convert it using Enum.chunk_every/2 and Enum.reduce/3
[:topic_id, "can't be blank", :created_by, "can't be blank"]
|> Enum.chunk_every(2)
|> Enum.reduce(%{}, fn ([key, val], acc) -> Map.put(acc, key, val) end)
You can read more about Keyword lists at http://elixir-lang.org/getting-started/maps-and-dicts.html
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…