0

別の辞書を含む辞書を作成したい。そして、私の辞書には1つのキーだけに対して複数の値が必要ですが、「同じキーを持つ要素が既に存在します」というエラーが表示されます。私はすでに HashMap を使用して Java でそれを実行しましたが、C# では問題ありません...

このようなもの:

static Dictionary<int, Dictionary<double, double>> _dict = new Dictionary<int, Dictionary<double, double>>()
        {
            { 1, new Dictionary<double,double>{ { 0.990, 0.0316 } } },
            { 1, new Dictionary<double,double>{ { 0.975, 0.0398 } } },
            { 1, new Dictionary<double,double>{ { 0.950, 0.0239 } } },
            { 1, new Dictionary<double,double>{ { 0.9  , 0.0158 } } },
            { 1, new Dictionary<double,double>{ { 0.1  , 2.71 } } },
            { 1, new Dictionary<double,double>{ { 0.050, 3.84 } } },
            { 1, new Dictionary<double,double>{ { 0.025, 5.02 } } },
            { 1, new Dictionary<double,double>{ { 0.010, 6.63 } } },

            { 2, new Dictionary<double,double>{ { 0.990, 0.02 } } },
            { 2, new Dictionary<double,double>{ { 0.975, 0.05 } } },
            { 2, new Dictionary<double,double>{ { 0.950, 0.10 } } },
            { 2, new Dictionary<double,double>{ { 0.9  , 0.21 } } },
            { 2, new Dictionary<double,double>{ { 0.1  , 4.60 } } },
            { 2, new Dictionary<double,double>{ { 0.050, 5.99 } } },
            { 2, new Dictionary<double,double>{ { 0.025, 7.38 } } },
            { 2, new Dictionary<double,double>{ { 0.010, 9.21 } } },

            { 3, new Dictionary<double,double>{ { 0.990, 0.12 } } },
            { 3, new Dictionary<double,double>{ { 0.975, 0.22 } } },
            { 3, new Dictionary<double,double>{ { 0.950, 0.35 } } },
            { 3, new Dictionary<double,double>{ { 0.9  , 0.58 } } },
            { 3, new Dictionary<double,double>{ { 0.1  , 6.25 } } },
            { 3, new Dictionary<double,double>{ { 0.050, 7.81 } } },
            { 3, new Dictionary<double,double>{ { 0.025, 9.35 } } },
            { 3, new Dictionary<double,double>{ { 0.010, 11.34 } } },
};

LordTakkeraの解決策を試します。

これは、KHI2 テーブルを表す必要があるためです。私はこれを Java で行い、ソフトは完璧に動作しますが、.NET で REF を使用する方法がわかりません。

4

2 に答える 2

0

エラーが示唆するように、C# ディクショナリで同じキーを持つ複数の値を持つことはできません。これは良いことです。重複したキーによって返される値は何ですか? せいぜい未定義の動作です。

ただし、あなたが書いているコードは、1 つの微調整で問題なく動作します。

static Dictionary<int, List<Dictionary<double, double>> = new Dictonary<int, List<Dictionary<double, double>>()
{
    {1, new List<Dictionary<double, double>()
        {
            new Dictionary<double,double>{ { 0.990, 0.0316 } },
            new Dictionary<double,double>{ { 0.975, 0.0398 } }
        }
    },
    ...
}

キーはコレクションにマップできます (コレクション自体を保持できます)。投稿したコードから、これが最も可能性の高い解決策のように見えます。何か明確にできることがあれば教えてください!

更新: これらの「ネストされた」辞書のそれぞれに要素が 1 つしかないことが保証されている場合は、他の回答または KeyValuePair を使用できます。

static Dictionary<int, List<KeyValuePair<double, double>> = new Dictonary<int, List<KeyValuePair<double, double>>()
{
    {1, new List<KeyValuePair<double, double>()
        {
            { 0.990, 0.0316 },
            { 0.975, 0.0398 }
        }
    },
    ...
}
于 2014-03-29T18:13:21.160 に答える