0

私が持っているとしましょう、

Dictionary<string, int> dict = new Dictionary<string, int>();

そして、すでにいくつかのアイテムがあります:

「A」、1

「B」、15

「C」、9

...。

今、私は新しいものを追加しているので、キーがすでに存在するかどうかをチェックしています:

for(int i = 0; i<n; i++)
    { 
        if (dict.ContainsKey(newKey[i] == true)
        { 
            //I should add newValue to existing value(sum all of them) of existing key pair
        }
        else
        {
            dict.Add(newKey[i],newValue[i]);
        }
    }

既存のキーのすべての値を要約し、既存のキーペアの既存の値に新しい値を追加するにはどうすればよいですか?

4

1 に答える 1

3

最も簡単なアプローチは次のとおりです。

for(int i = 0; i < n; i++)
{
    int currentValue;
    // Deliberately ignore the return value
    dict.TryGetValue(newKey[i], out currentValue);
    dict[newKey[i]] = currentValue + newValue[i];
}

これにより、すべてのキーに対して1つの「get」が実行され、次に1つの「put」が実行されます。これは、デフォルト値intが0であるという事実を使用していますTryGetValue。falseを返すと、currentValue0に設定されます。これは、新しいエントリに適しています。

于 2012-10-03T07:48:01.133 に答える