如何在C#中更新字典键的值?

26

我在C#中有以下代码,基本上是一个简单的字典,包含一些键和它们的值。

Dictionary<string, int> dictionary =
    new Dictionary<string, int>();
dictionary.Add("cat", 2);
dictionary.Add("dog", 1);
dictionary.Add("llama", 0);
dictionary.Add("iguana", -1);

我想用新值5更新键'cat',
我该如何做?


1
真的吗?你先尝试过谷歌/必应/首选搜索引擎了吗? - sovanesyan
9
我做了,这是第一个结果!这样很有建设性啊! - Brandon Clapp
4个回答

41

你尝试过

dictionary["cat"] = 5;

:)

更新

dictionary["cat"] = 5+2;
dictionary["cat"] = dictionary["cat"]+2;
dictionary["cat"] += 2;

注意不存在的键 :)


但是如果我想将新值添加到现有值中怎么办? - Ahsan Ashfaq
@AhsanAshfaq,您所说的“添加到现有的一个”是什么意思? - walther
嗯,@JHON,它也起作用了。谢谢你,伙计,你真的帮了我,非常感谢。 - Ahsan Ashfaq
只需检查一个键是否存在并更新其值,如果不存在,则添加一个新的字典条目。 - cubski
感谢@cubski的建议,这是一个好建议。 - Ahsan Ashfaq
@AhsanAshfaq:您可以在下面找到一个简单的实现。 - cubski

19

试试这个简单的函数,如果字典项不存在,则添加一个,如果存在,则更新:

    public void AddOrUpdateDictionaryEntry(string key, int value)
    {
        if (dict.ContainsKey(key))
        {
            dict[key] = value;
        }
        else
        {
            dict.Add(key, value);
        }
    }

这与dict[key] = value相同。


4
这与一行中的 dict[key] = value 相同。我会将该函数称为 AddOrUpdate - nawfal
3
你认为 dict[key] = value 做了什么,它与 dict[key] = value 是相同的。 - nawfal
1
@nawfal 你说得对。我一直以为当key不存在时,dict[key]会抛出异常。每天都有新的收获。谢谢。 - cubski
1
当键不存在时,dict[key]会抛出KeyNotFoundException异常。您需要进行设置才能创建它。dict[key] = value。 - Dan But
1
是的,我表达得不够清楚。 当键不存在时,var x = dict[key] 会抛出异常。 而 dict[key] = x 在键不存在时不会抛出异常。 - Dan But
显示剩余3条评论

0

直接使用索引器进行更新:

dictionary["cat"] = 3

0

字典是一个键值对。通过

捕获键。

dic["cat"] 

并将其赋值为

dic["cat"] = 5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接