我正在尝试制作一个程序,该程序有一个字典,其中单词及其定义由“:”分隔,每个单词由“|”分隔 但由于某种原因,当我打印字典的值时,我得到 System.Collection.Generic.List这里有一个可能的输入:“解决:任务或运动所需的设备 | 代码:为计算机程序编写代码 | 位:某物的一小块、部分或数量 | 解决:坚决努力解决问题| 位:很短的时间或距离"using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Ex1_Dictionary{ class Program { static void Main(string[] args) { var Input = Console.ReadLine().Split(':', '|').ToArray(); var Words = new List<string>(); var Dict = new Dictionary<string, List<string>>(); for (int i = 0; i < Input.Length; i+=2) { string word = Input[i]; string definition = Input[i + 1]; word = word.TrimStart(); definition = definition.TrimStart(); Console.WriteLine(definition); if (Dict.ContainsKey(word) == false) { Dict.Add(word, new List<string>()); } Dict[word].Add(definition); } foreach (var item in Dict) { Console.WriteLine(item); } } }}
2 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
我实际上希望输出是 a KeyValuePair<string, List<string>>
,因为这就是当你像在行中那样item
迭代时得到的Dictionary<string, List<string>>
foreach(var item in Dict)
您应该将输出更改为:
Console.WriteLine(item.Key + ": " + string.Join(", " item.Value));
浮云间
TA贡献1829条经验 获得超4个赞
首先,您必须使用item.Value而不是item访问您的定义列表。
您需要遍历存储在您的定义List<string>:
foreach (var item in Dict)
{
foreach (var definition in item.Value)
{
Console.WriteLine(definition);
}
}
这将为列表中的每个定义打印一行。如果要在一行中打印所有定义,可以改为执行以下操作:
foreach (var item in Dict)
{
Console.WriteLine(string.Join(", ", item.Value));
}
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消