For your information, this doesn't create what you think it does.
("layer" . (command "-layer" "make" "BLOCK1_LAYER" "color" "1" "" "lw" "0.5" "" "lt" "continuous" ""))
If you cut and paste the following into the command line then press return, it will create the layer and set it as current (note that there is an extra return ("") added at the end to close the command).
(command "-layer" "make" "BLOCK1_LAYER" "color" "1" "" "lw" "0.5" "" "lt" "continuous" "" "")
The next line will read "command: nil" It does not return the name of the layer created so what you have in fact created is
("layer" . nil)
This is true of almost all (command ....) calls in lisp.
It is far better to pass in the layer name, extract it then test if it exists, and if not create it.
(setq mylayer (cdr (assoc "layer" mylist)))
(if (not (tblsearch "layer" mylayer));if it doesn't exist
(command "_-layer" "_M" mylayer "_C" "1" "_LT" "continous" .....);make it and set current
(setvar "clayer" mylayer);does exist, make it current
);end_if