5

我正在尝试构建一个列表字典,但我正在读取一个字符串,需要将列表命名为字符串并将它们作为键添加到字典中。

IE 读入“你好”

使用读入的内容创建列表

List<string> (insert read string here ) = new List<string>();

然后将该列表名称添加为字典的键。

Dictionary.Add(readstring, thatlist);

我能找到的只是一个硬代码实现。

Turing.Add("S", S);

我的目标:创建一个通用图灵机,所以我从一个文本文件中读取输入,下一步看起来像这样,(q0 a) -> q1 X R。

然后使用我读入的所有步骤在虚拟磁带“tape = XXYYZZBB”上以最终状态结束

我有为此编写的伪代码,但我无法让字典工作。

编辑:添加更多信息以减少混乱。我给出了文本文件前 2 行的开始和结束状态。然后我给出了过渡。

q0 //开始状态 q5 //结束状态 q0 a q1 XR //转换

我去掉了前两行输入给我 0 和 5 然后创建了一个 for 循环来创建每个状态的列表。

for (int i = 0; i <= endState; i++)
{
List<string> i = new List<string>();
}

然后,我想将每个列表名称作为键添加到我正在创建的列表字典中。

Dictionary.Add(listname, thatlist);

我需要帮助来实现上述代码,因为它给出了错误。

4

1 回答 1

8

您是否将列表创建为

List<string> insertReadStringHere = new List<string>();

或者

List<string> foo = new List<string>();

甚至

List<string> shellBeComingRoundTheMountain = new List<string>();

重要的是一旦你完成了

MyDictionary.Add(theInputString, shellBeComingRoundTheMountain);

然后,您可以通过以下方式访问该特定列表

MyDictionary[theInputString]

初始列表被“称为”insertReadStringHerefooshellBeComingRoundTheMountain

您甚至不需要将列表保存在这样的命名变量中。例如,

Console.WriteLine("Input a string to create a list:");
var createListName = Console.ReadLine();
// As long as they haven't used the string before...
MyDictionary.Add(createListName, new List<string>());

Console.WriteLine("Input a string to retrieve a list:");
var retrieveListName = Console.ReadLine();
// As long as they input the same string...
List<string> retrievedList = MyDictionary[retrieveListName];

编辑:如果您想要一定数量的列表,请使用字典从int到字符串,而不是字符串到字符串:

int maxNumberOfLists = 5; // or whatever you read from your text file.
Dictionary<int, List<string>> myLists =
            new Dictionary<int, List<string>> (maxNumberOfLists);
for (int i = 1; i <= maxNumberOfLists; i++)
    myLists[i] = new List<string>();

然后您可以访问您的列表,例如

var firstList = myLists[1];

通常我会推荐一个数组,但这会给你从 1 到 5 而不是从 0 到 4 的列表,这似乎就是你想要的。

于 2012-11-28T08:57:53.603 回答