辞書のキーと値を同時に取得する
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?
334
3
値は必ずしも一意である必要はないので、ルックアップを行う必要があります。次のようなことができます。
値が一意で、挿入頻度が読み取り頻度よりも低い場合は、値をキー、キーを値とする逆引き辞書を作成します。
それができるんですね。
1.辞書内のすべての
KeyValuePair
'をループさせる(辞書に多数のエントリがある場合は、かなりのパフォーマンスの低下を招く)。 2.2つの辞書を使用する。1つは値からキーへのマッピング用、もう1つはキーから値へのマッピング用である(これはメモリ上で2倍のスペースを取ることになる)。パフォーマンスを考慮しない場合は方法1を使用し、メモリを考慮しない場合は方法2を使用します。
また、すべてのキーは一意でなければなりませんが、値は一意である必要はありません。 指定された値を持つキーが複数あっても構いません。
キーと値の関係を逆にしてはいけない理由はありますか?
私はとてもシンプルな方法でこれを実現しました。私にとっては完璧にうまくいきました。