C# 按键查找字典项后增加字典值
我有一本字典,定义如下:C# 按键查找字典项后增加字典值,c#,dictionary,C#,Dictionary,我有一本字典,定义如下: Dictionary<string, double> collection = new Dictionary<string, double>(); 您可以使用以递增的值对其进行更新: if (!collection.ContainsKey(str)) collection.Add(str, 0); else { collection[str]++; } 这是有效的,因为它与: collection[str] = collect
Dictionary<string, double> collection = new Dictionary<string, double>();
您可以使用以递增的值对其进行更新:
if (!collection.ContainsKey(str))
collection.Add(str, 0);
else
{
collection[str]++;
}
这是有效的,因为它与:
collection[str] = collection[str] + 1;
MSDN:
您还可以使用Item属性通过设置
字典中不存在的键的值。
设置属性值时,如果键位于
字典中,与该键关联的值为
替换为指定的值。如果钥匙不在
字典中,键和值被添加到
字典
如果您有另一个注释为的
KeyValuePair
集合,并且如果密钥存在,您希望使用这些值更新词典,或者如果密钥不存在,则添加这些值:
foreach(KeyValuePair<string, double> pair in otherCollection)
{
if (!collection.ContainsKey(pair.Key))
collection.Add(pair.Key, 0);
else
{
collection[pair.Key] = pair.Value;
}
}
foreach(其他集合中的KeyValuePair对)
{
if(!collection.ContainsKey(pair.Key))
collection.Add(pair.Key,0);
其他的
{
集合[pair.Key]=pair.Value;
}
}
您可以使用以递增的值对其进行更新:
if (!collection.ContainsKey(str))
collection.Add(str, 0);
else
{
collection[str]++;
}
这是有效的,因为它与:
collection[str] = collection[str] + 1;
MSDN:
您还可以使用Item属性通过设置
字典中不存在的键的值。
设置属性值时,如果键位于
字典中,与该键关联的值为
替换为指定的值。如果钥匙不在
字典中,键和值被添加到
字典
如果您有另一个注释为的
KeyValuePair
集合,并且如果密钥存在,您希望使用这些值更新词典,或者如果密钥不存在,则添加这些值:
foreach(KeyValuePair<string, double> pair in otherCollection)
{
if (!collection.ContainsKey(pair.Key))
collection.Add(pair.Key, 0);
else
{
collection[pair.Key] = pair.Value;
}
}
foreach(其他集合中的KeyValuePair对)
{
if(!collection.ContainsKey(pair.Key))
collection.Add(pair.Key,0);
其他的
{
集合[pair.Key]=pair.Value;
}
}
\u collection[str]
将为您提供与[]
中指定的键相对应的值,因此,\u collection[str]+
将使与键相对应的值增加1
您只需按如下方式更改else部分:
string str;
if (!_collection.ContainsKey(str))
_collection.Add(str, 0);
else
{
_collection[str]++;
}
\u collection[str]
将为您提供与[]
中指定的键相对应的值,因此,\u collection[str]+
将使与键相对应的值增加1
您只需按如下方式更改else部分:
string str;
if (!_collection.ContainsKey(str))
_collection.Add(str, 0);
else
{
_collection[str]++;
}
我不明白为什么人们继续用字典反模式发布代码
if(dic.ContansKey(key))value=dic[key]
。最有效、最正确的方法是这样
string str;
double value;
if (!_collection.TryGetValue(str, out value))
{
// set the initial value
_collection.Add(str, 0);
}
else
{
// update the existing value
value++;
_collection[str] = value;
}
请注意,注释仅用于示例,通常只是
if (!_collection.TryGetValue(str, out value))
_collection.Add(str, 0);
else
_collection[str] = value + 1;
我不明白为什么人们继续用字典反模式发布代码
if(dic.ContansKey(key))value=dic[key]
。最有效、最正确的方法是这样
string str;
double value;
if (!_collection.TryGetValue(str, out value))
{
// set the initial value
_collection.Add(str, 0);
}
else
{
// update the existing value
value++;
_collection[str] = value;
}
请注意,注释仅用于示例,通常只是
if (!_collection.TryGetValue(str, out value))
_collection.Add(str, 0);
else
_collection[str] = value + 1;
使用C#7.0,最简单、最有效的方法是:
_collection.TryGetValue(str, out double value);
_collection[str] = value++;
使用C#7.0,最简单、最有效的方法是:
_collection.TryGetValue(str, out double value);
_collection[str] = value++;
您不应该使用FirstOrDefault在字典中查找条目。直接使用索引:collection[str]您不应该使用FirstOrDefault在字典中查找项。直接使用索引:collection[str]好的,但如果我想循环我的集合并用特定值更新我的值?@berrywer:这是一个完全不同的问题,我想你需要为此创建另一篇文章。@berrywer:什么集合?您在代码中使用的是
\u collection
和collection
,这令人困惑。@berrywer:我编辑了我的答案,向您展示了如何循环另一个集合来更新此词典。我希望插入不同的值,而不是使用++,这样我就不能这样做(只有在我想增加exist值的情况下)-有什么建议吗?好的,那很好,但如果我想循环我的收藏并用特定的值更新我的值?@berrywer:这是一个完全不同的问题,我想你需要为此创建另一篇帖子。@berrywer:什么收藏?您在代码中使用的是\u collection
和collection
,这令人困惑。@berrywer:我编辑了我的答案,向您展示了如何循环另一个集合来更新此词典。我希望插入不同的值,而不是使用++,这样我就不能这样做(只有在我想增加exist值的情况下)-有什么建议吗?使用ContainsKey效率低。使用ContainsKey效率低。