文字列の配列を文字列の辞書に変換するための組み込み関数がありますか、ここでループを行う必要がありますか?文字列の配列を文字列の辞書に変換する最もエレガントな方法
答えて
あなたは、あなたが辞書に任意の配列(すなわちIEnumerable<T>
)を変えることができ、.NET 3.5を使用していると仮定すると、キーと値。項目自体が目的の値であれば、キーに使用される1つの投影だけを指定できます。あなたが元に各文字列の大文字バージョンをマップしたい場合
したがって、たとえば、あなたが使用できます。
var dictionary = strings.ToDictionary(x => x.ToUpper());
をあなたのケースでは、キーと値がために何をしたいですか?
あなたが実際にちょうどは(あなたはそれが例えば、特定の文字列が含まれているかどうかを確認することができます)を設定したい場合は、使用することができます。
var words = new HashSet<string>(listOfStrings);
重複するキーを前にチェックしない限り、riscは常にそこにあります。 – Dykam
@Dykam:確かに。重複を処理したい場合は、代わりに 'ToLookup'が必要です。営業担当者が実際に何をしようとしているのかを説明すればもっと分かるはずです。 –
クール!もし私が同じ長さの値の文字列配列とキー配列を持っていたら? Linqは私を助けることができますか? –
どういう意味ですか?
辞書はハッシュで、キーは値にマップされます。
あなたのキーとは何ですか?あなたの価値は何ですか?
var dictionary = sequence.ToDictionary(item => item.Key,
item => item.Value)
Key
とValue
は、あなたのように行動したい適切なプロパティです:
foreach(var entry in myStringArray)
myDictionary.Add(????, entry);
あなたがこれを行うには、LINQを使用することができ、
using System.Linq;
string[] myArray = new[] { "A", "B", "C" };
myArray.ToDictionary(key => key, value => value);
結果、このような辞書です:
しかしアンドリューは最初に答えられるべきで尋ねる質問は(あなたのキーと値はどのようなもの)あなたが値を持たない辞書が必要な場合は、HashSet
が必要になる場合があります。
var hashset = new HashSet<string>(stringsArray);
、我々は、我々はそのインデックスを呼び出して値を取得できる値のリストについて話しているArray
を言います(value => array [index])ので、正しい辞書はキーのインデックスを持つ辞書です。
そして@ジョンスキートのおかげで、それを達成するための適切な方法は次のとおりです。
var dictionary = array
.Select((v, i) => new {Key = i, Value = v})
.ToDictionary(o => o.Key, o => o.Value);
もう一つの方法は、次のように拡張メソッドを使用することです:
public static Dictionary<int, T> ToDictionary<T>(this IEnumerable<T> array)
{
return array
.Select((v, i) => new {Key = i, Value = v})
.ToDictionary(o => o.Key, o => o.Value);
}
これはa)非効率的です。 b)同じ値が配列内で複数回出現すると失敗します。より効率的かつ確実にこれを行うために、インデックスを提供する 'Select'オーバーロードを使用することもできます。 –
ありがとう、 'Select'を使うために参照したコードを編集します;)。 –
- 1. PHP配列をPython辞書形式の文字列に変換
- 2. 文字列を配列文字に変換する方法
- 3. 辞書<文字列、辞書<文字列、文字列>>をデータテーブルに変換
- 4. 文字列をJavaの文字列配列に変換する
- 5. 文字列配列をtoStringメソッドの文字列に変換する方法
- 6. 文字列を文字配列に分割する最も簡単な方法
- 7. 文字列配列をdouble配列に変換する最速の方法は?
- 8. 辞書を文字列に変換する方法anglejs
- 9. 文字列と文字列のリストを文字列に変換する方法
- 10. 文字ベクトルを文字列に変換する最も効率的な方法
- 11. C文字列の配列をSwift文字列に変換
- 12. ダックタイピング文字列、記号、配列のエレガントな方法は?
- 13. intを文字列に変換する方法並列配列
- 14. []文字列を...文字列に変換する方法
- 15. 文字列を1文字ずつの文字列に変換する方法
- 16. ユニコード配列をPythonの文字列に変換する方法
- 17. マップの文字列を配列に変換する方法javascript?
- 18. 文字列をPHPの配列に変換する方法
- 19. SpecFlowテーブルを文字列の配列に変換する方法
- 20. オブジェクトの配列を文字列に変換する方法
- 21. Go:文字列を配列文字列に変換
- 22. ArrayListを文字列に変換する最も良い方法
- 23. 文字列を文字配列に変換する
- 24. 文字列を文字配列に変換する
- 25. 文字列に文字配列を変換する
- 26. 列挙型の値をJavaの文字列配列に変換する最も便利な方法
- 27. 文字列を文字列に変換する方法hash_map(文字列、文字列、stringHashFunction>をLinuxでC++
- 28. 文字列の配列をCの配列に変換する最も良い方法
- 29. C++で16進文字配列を文字列に変換する方法は?
- 30. 数字の文字列を文字に変換する方法
に依存あなたはすべてのことを望んでいます。あなたはそれを見ていてもループは終わります。 –
どこかには常にループがありますが、LINQではそのコードを隠すことができます。つまり、あなたの*コードにループを入れる必要はありません。 –