最简单的方法是手动使用符号
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
未被使用/定义。之后,您可以使用this问题的答案根据它们在str1
中的位置分配变量。然而,这种方法的实用性也值得怀疑。
我认为最有意义的是创建所谓的索引变量,例如
myIndexedVar["cow"] = 1
myIndexedVar["monkey"] = 2
其中myIndexedVar
本质上是一个键值对的哈希表,其中键是您的字符串,值是您想要分配给它们的任何内容。如果需要,可以自动化该过程。
编辑
为了说明对这些变量的分配,这里有一个自动化该过程的函数:
assignVariables[varNames_List, values_List, hashName_Symbol ] /
Length[varNames] == Length[values] :=
MapThread[(hashName[#1] =
这是如何使用它的:
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很有用,因为它们为索引变量提供了机制。