Самое простое - просто использовать символы cow
и monkey
вручную, а не строки:
In[309]:=
cow = 1;
monkey = 2;
{cow, monkey}
Out[311]= {1, 2}
Но это, вероятно, не то, что вы спросили. Если вы хотите автоматически преобразовать строки в переменные, то
то, что вам нужно сделать (если я правильно понял вопрос), это сначала преобразовать ваши строки в символы, поскольку символам можно присвоить значения и использовать в качестве переменных:
Remove[cow,monkey];
str = {"cow", "monkey"};
str1 = ToExpression /@ str
{cow, monkey}
(я предполагаю, что символы cow
и monkey
не были использованы / определены). После этого вы можете использовать ответ для этого вопроса, чтобы назначить переменные на основе их позиций в str1
. Однако полезность этого подхода также сомнительна.
Что мне кажется наиболее целесообразным, так это создать так называемые индексированные переменные , такие как
myIndexedVar["cow"] = 1;
myIndexedVar["monkey"] = 2;
, где myIndexedVar
- это, по сути, хэш-таблица пар ключ-значение, где ключи - это ваши строки, а значения - это то, что вы хотите им назначить. Процесс может быть автоматизирован при необходимости.
EDIT
Чтобы проиллюстрировать присвоения таким переменным, вот функция, которая автоматизирует это:
assignVariables[varNames_List, values_List, hashName_Symbol ] /;
Length[varNames] == Length[values] :=
MapThread[(hashName[#1] = #2) &, {varNames, values}];
Вот как вы можете его использовать:
In[316]:= assignVariables[str,{{4,2,3},{}},myIndexedVar]
Out[316]= {{4,2,3},{}}
In[317]:= myIndexedVar["cow"]
Out[317]= {4,2,3}
In[318]:= myIndexedVar["monkey"]
Out[318]= {}
Но, опять же, это действительно хеш-таблица, поэтому ваш вопрос имеет для меня больше смысла, если переформулировать его следующим образом: «Я хочу создать хеш-таблицу со строковыми ключами. Какой самый простой способ сделать это в Mathematica, добавить пары ключ-значение и доступ к ним ". Ответ, кажется, - индексированные переменные, как показано выше. Вы также можете прочитать о DownValues , поскольку они предоставляют механизм для индексированных переменных.