0

次のような辞書があるとします。

var dic = new Dictionary<Int32, Int32>();

キーは ID で、値はカウントです。次に、新しいキーを追加します。これは、次の行で完全に正常に機能します。

dic[1] = 1; //adding ID 1, Count 1 to the current Dictionary

次の値を持つ整数のリストがあると仮定します。

var ids = new List<int> {1, 2, 3 , 1, 2};

次の内容の辞書を取得したい場合:

[1, 2] ==> (ID 1, Count 2)
[2, 2] ==> (ID 2, Count 2)
[3, 1] ==> (ID 3, Count 1)

明らかな解決策は次のとおりです。

foreach (var id in ids)
{
    dic[id]++;
}

しかし、これはKeyNotFoundException. したがって、明らかに演算子+=は辞書ではサポートされていません。

私はすでにこの問題への回答を添付しました。これを達成するためのより良い方法はありますか?

4

2 に答える 2

2

私の解決策:

var dic = new Dictionary<Int32, Int32>();
var ids = new List<int> { 1, 2, 3, 1, 2 };
foreach (var id in ids)
{
    if (dic.ContainsKey(id))
    {
        dic[id]++;
    } else {
        dic[id] = 1;
    }
}
于 2013-06-20T09:56:12.127 に答える