当前位置: 首页 > 知识库问答 >
问题:

IDictionary值覆盖

扈运浩
2023-03-14

这是我第一次需要用字典做些事情。我不能覆盖item.value,我不知道该如何做到这一点。

编写一个程序,从标准输入到文件结束(EOF)的行中每行读取一只猴子的名字,以及它以以下格式收集的香蕉数量:

monkey_name;香蕉数

程序将猴子的名字和它们收集到的香蕉数量以示例输出中给出的形式写入标准输出,并根据猴子的名字按词典升序!

输入:

Jambo;10
Kongo;5
Charlie;12
Jambo;10
Koko;14
Kongo;10
Jambo;5
Charlie;8 

输出:

Charlie: 20
Jambo: 25
Koko: 14
Kongo: 15

下面是我的代码:

            string input;
            string[] row = null;
            IDictionary<string, int> majom = new SortedDictionary<string, int>();
            int i;
            bool duplicate = false;
            while ((input = Console.ReadLine()) != null && input != "")
            {
                duplicate = false;
                row = input.Split(';');
                foreach(var item in majom)
                {
                    if(item.Key == row[0])
                    {
                        duplicate = true;
                        i = int.Parse(row[1]);
                     ///item.Value += i; I'm stuck at here. I dont know how am i able to modify the Value
                    }
                }
                if(!duplicate)
                {
                    i = int.Parse(row[1]);
                    majom.Add(row[0], i);
                }
                
            }
            foreach(var item in majom)
            {
                Console.WriteLine(item.Key + ": " + item.Value);
            }

对不起,我的英语不好,我尽力了。

共有1个答案

梁丘翔
2023-03-14
class Program
{
    static void Main()
    {
        string input;
        string[] row;
        IDictionary<string, int> majom = new SortedDictionary<string, int>();

        //int i;
        //bool duplicate = false;

        while ((input = Console.ReadLine()) != null && input != "")
        {
            //duplicate = false;
            row = input.Split(';');

            // Usually dictionaries have key and value
            // hier are they extracted from the input
            string key = row[0];
            int value = int.Parse(row[1]);

            // if the key dose not exists as next will be created/addded
            if (!majom.ContainsKey(key))
            {
                majom[key] = 0;
            }

            // the value coresponding to the already existing key will be increased
            majom[key] += value;

            //foreach (var item in majom)
            //{
            //    if (item.Key == row[0])
            //    {
            //        duplicate = true;
            //        i = int.Parse(row[1]);
            //        item.Value += i; I'm stuck at here. I dont know how am i able to modify the Value
            //    }
            //}
            //if (!duplicate)
            //{
            //    i = int.Parse(row[1]);
            //    majom.Add(row[0], i);
            //}
        }

        foreach (var item in majom)
        {
            Console.WriteLine(item.Key + ": " + item.Value);
        }
    }  
}
 类似资料:
  • 我认为将对象强制转换为相当简单,但是

  • 我正在制作一个应用程序,其中我使用、和当用户填充文本并单击时,文本将显示在中,我的问题是我做了所有的工作,但当我将数据添加到中时,它会覆盖上一个数据,上一个数据不会显示出来

  • 我有几个POJO,这将有一个货币数额。我的想法是创建一个通用对象(由货币和值组成),然后每当我想在我的POJOs中表示一个货币金额时,就会使用它: 由于将在多个POJO中使用,我无法用注释和属性,因为在所有情况下,列名并不总是相同的。有没有办法注释属性(如上例中的)以提供和属性的列名,以便jOOQ在映射/取消映射POJO时理解它们,类似于Hibernate解释请问?

  • 假设我有一个带有字符串键和整数值的HashMap: 我想通过将这些信息放入另一个HashMap中来切换键和值。我知道一个HashMap不能有重复的键,所以我尝试将信息放入一个HashMap中,其中包含映射到字符串ArrayList的键的整数,这样我就可以有一个整数映射到多个字符串: 我在这里的目标是能够对任何一组数据进行“反转”,否则我只能硬编码值。我从上面的代码中得到的输出是: 正如您所看到的,

  • 问题内容: 看一下下面的代码,它显示列表理解。 当您在 Python 2.6中 执行代码示例时,它将显示 99 ,但是在 Python 3.x中 执行它时,将显示 6 。 更改行为的原因是什么,为什么 Python 3.x中 的输出 6 是? __ 先感谢您! 问题答案: 旧的行为是一个错误,但是由于某些代码依赖于此,因此无法轻松修复。 列表推导中的变量应与顶层变量不同。从逻辑上讲,它应该有自己的

  • 问题内容: 在我的Django(1.2)项目中,我想以模型形式预填充字段,但是新值将被忽略。这是代码段: 我也尝试了使用,但没有效果:总是在表单中显示数据库值。有任何想法吗? 问题答案: 尝试这个: