[C#] C #에서 Dictionary에 저장된 값을 업데이트하는 방법은 무엇입니까?

사전에서 특정 키의 값을 업데이트하는 방법은 Dictionary<string, int>무엇입니까?



답변

주어진 키에서 사전을 가리키고 새로운 값을 지정하십시오.

myDictionary[myKey] = myNewValue;


답변

인덱스로 키에 액세스하면 가능합니다

예를 들면 다음과 같습니다.

Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary["test"] = 1;
dictionary["test"] += 1;
Console.WriteLine (dictionary["test"]); // will print 2


답변

이 접근법을 따를 수 있습니다 :

void addOrUpdate(Dictionary<int, int> dic, int key, int newValue)
{
    int val;
    if (dic.TryGetValue(key, out val))
    {
        // yay, value exists!
        dic[key] = val + newValue;
    }
    else
    {
        // darn, lets add the value
        dic.Add(key, newValue);
    }
}

여기에 도달하는 가장자리는 사전에 한 번의 액세스로 해당 키의 값을 확인하고 얻는 것입니다. ContainsKey존재를 확인하고 를 사용 하여 값을 업데이트하는 데 사용 dic[key] = val + newValue;하면 사전에 두 번 액세스합니다.


답변

LINQ : Access를 사용하여 키 사전을 만들고 값을 변경하십시오.

Dictionary<string, int> dict = new Dictionary<string, int>();
dict = dict.ToDictionary(kvp => kvp.Key, kvp => kvp.Value + 1);


답변

키가 foo[x] = 9어디에 x있고 9가 값인 것처럼 인덱스로 업데이트하는 방법은 다음과 같습니다.

var views = new Dictionary<string, bool>();

foreach (var g in grantMasks)
{
    string m = g.ToString();
    for (int i = 0; i <= m.Length; i++)
    {
        views[views.ElementAt(i).Key] = m[i].Equals('1') ? true : false;
    }
}


답변

  1. 업데이트 -존재 만 수정합니다. 인덱서 사용의 부작용을 피하려면 다음을 수행하십시오.

    int val;
    if (dic.TryGetValue(key, out val))
    {
        // key exist
        dic[key] = val;
    }
  2. 업데이트 또는 ( 값이 dic에 없으면 새로 추가 )

    dic[key] = val;

    예를 들어 :

    d["Two"] = 2; // adds to dictionary because "two" not already present
    d["Two"] = 22; // updates dictionary because "two" is now present

답변

이것은 당신을 위해 일할 수 있습니다 :

시나리오 1 : 기본 유형

string keyToMatchInDict = "x";
int newValToAdd = 1;
Dictionary<string,int> dictToUpdate = new Dictionary<string,int>{"x",1};

if(!dictToUpdate.ContainsKey(keyToMatchInDict))
   dictToUpdate.Add(keyToMatchInDict ,newValToAdd );
else
   dictToUpdate[keyToMatchInDict] = newValToAdd; //or you can do operations such as ...dictToUpdate[keyToMatchInDict] += newValToAdd;

시나리오 2 : 값으로 목록에 사용한 접근 방식

int keyToMatch = 1;
AnyObject objInValueListToAdd = new AnyObject("something for the Ctor")
Dictionary<int,List<AnyObject> dictToUpdate = new Dictionary<int,List<AnyObject>(); //imagine this dict got initialized before with valid Keys and Values...

if(!dictToUpdate.ContainsKey(keyToMatch))
   dictToUpdate.Add(keyToMatch,new List<AnyObject>{objInValueListToAdd});
else
   dictToUpdate[keyToMatch] = objInValueListToAdd;

도움이 필요한 사람에게 유용하기를 바랍니다.