リストに5つの異なるdoubleを持つ辞書があります。リスト内の各項目の順序を知っています。キーを指定してリスト内の特定の値を検索できる、1 行のコードを見つけようとしています。
次のようなものです:
double myDbl = myDict["key"][value[3]];
このようなことは可能ですか、どこにも見つかりません。ありがとう
リストに5つの異なるdoubleを持つ辞書があります。リスト内の各項目の順序を知っています。キーを指定してリスト内の特定の値を検索できる、1 行のコードを見つけようとしています。
次のようなものです:
double myDbl = myDict["key"][value[3]];
このようなことは可能ですか、どこにも見つかりません。ありがとう
他の人が言ったように、これDictionary<string, List<double>>
が
double value = myDict["key"][3];
ただし、この行:
リスト内の各項目の順序を知っています。
実際にコードを再構築する必要があると思います。最初の項目が常に 1 つのデータ (体重など) を表し、次の項目が常に別のデータ (身長など) を表すことがわかっている場合は、それらのプロパティを使用して新しい型を作成する必要があります。これに a を使用するList<double>
と、コードの保守がはるかに難しくなります...各値の意味に関する情報が自然に明らかになりません。
たとえば、 a に変更したら、Dictionary<string, Person>
次を使用できます。
double height = myDict["key"].Height;
これは非常に明確です。
もちろん、私が引用した行によってあなたが何か他のことを意味している可能性があります...
次のように定義された辞書があると仮定します
Dictionary<string,List<double>>
また、辞書要素が正しく初期化されていると仮定すると、次のことができます。
myDbl = myDict["key"][3];
おそらく次のようになります。
double myDbl = myDict["key"][3];
結果のリストからインデックス 3 を探しているので、key
myDict["key"]
演算子が実行される順序を理解することで、 が値の型を返すことがわかります。ここでは、これを と想定していますList<double>
。この戻り値から、4 番目のオブジェクト (0 ベース) を取得する必要があるため[3]
、最後に使用します。
与えられた:
Dictionary<string, List<double>> l_dict = new Dictionary<string, List<double>>();
l_dict.Add( "key", new List<double>( new double[]{ 1, 2, 3, 4, 5 } );
それで:
List<double> l_valueCollection = l_dict["key"];
double l_value = l_valueCollection[3];
または、より簡潔に (必要な「ワンライナー」):
double l_value = l_dict["key"][3];
コレクションが次のようになっている場合:
Dictionary<string,List<double>> myDictionary;
次に、次のように動作します。
double myDouble = myDictionary["key"][3];
どのキーを渡しても、値を返すこのようなメソッドを作成します。
private double GetValue(Dictionary<string, double> dict, string key)
{
return (from pair in dict where pair.Key == key select pair.Value).FirstOrDefault();
}
これは LINQ を使用しており、.Net Framework 3.5 でのみ機能することに注意してください。