C#でDictionaryのkey by valueを取得するには?
Dictionary<string, string> types = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
以下のようなものが欲しいです。
getByValueKey(string value);
getByValueKey("one")
は、"1"
を返す必要があります。
これを行う最良の方法は何でしょうか?たぶんHashTableかSortedLists?
それができるんですね。
1.辞書内のすべてのKeyValuePair<TKey, TValue>
'をループさせる(辞書に多数のエントリがある場合は、かなりのパフォーマンスの低下を招く)。
2.2つの辞書を使用する。1つは値からキーへのマッピング用、もう1つはキーから値へのマッピング用である(これはメモリ上で2倍のスペースを取ることになる)。
パフォーマンスを考慮しない場合は方法1を使用し、メモリを考慮しない場合は方法2を使用します。
また、すべてのキーは一意でなければなりませんが、値は一意である必要はありません。 指定された値を持つキーが複数あっても構いません。
キーと値の関係を逆にしてはいけない理由はありますか?
私はとてもシンプルな方法でこれを実現しました。私にとっては完璧にうまくいきました。
Dictionary<string, string> types = new Dictionary<string, string>();
types.Add("1", "one");
types.Add("2", "two");
types.Add("3", "three");
Console.WriteLine("Please type a key to show its value: ");
string rLine = Console.ReadLine();
if(types.ContainsKey(rLine))
{
string value_For_Key = types[rLine];
Console.WriteLine("Value for " + rLine + " is" + value_For_Key);
}