为了账号安全,请及时绑定邮箱和手机立即绑定

字典包含列表地址而不是列表值 C#

字典包含列表地址而不是列表值 C#

C#
互换的青春 2022-06-12 10:44:16
我正在尝试制作一个程序,该程序有一个字典,其中单词及其定义由“:”分隔,每个单词由“|”分隔 但由于某种原因,当我打印字典的值时,我得到 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));


查看完整回答
反对 回复 2022-06-12
?
浮云间

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));

}


查看完整回答
反对 回复 2022-06-12
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信