我想创建一个
Dictionary<string, int[]> dict
两个数组中的一个(不同长度):
string[] keys = { "A", "B", "A", "D", "C","E" };
string[] values = { green, blue, yellow};
结果:
["A"] = {green}
["B"] = {blue}
["D"] = {yellow}
["C"] = {green}
["E"] = {blue}
答案 0 :(得分:3)
在这种情况下,您的字典为Dictionary<string,string>
。
从您的样本看来,您希望让value数组的模数(%)运算符处理数组长度差。
var dict = new Dictionary<string,string>();
for(int i = 0; i < keys.Length; i++) {
var j = i % values.Length;
dict[keys[i]] = values[j];
}
答案 1 :(得分:2)
您可以尝试一个简单的 Linq :
using System.Linq;
...
如果key
仅包含唯一个项目:
// here all keys are unique
string[] keys = { "A", "B", "C", "D", "E", "F" };
string[] values = { "green", "blue", "yellow" };
Dictionary<string, string> result = Enumerable
.Range(0, keys.Length)
.ToDictionary(i => keys[i], i => values[i % values.Length]);
如果不是,我们应该在key
再次出现时跳过
// Note, that "A" key repeats twice
string[] keys = { "A", "B", "A", "D", "C", "E" };
string[] values = { "green", "blue", "yellow" };
Dictionary<string, string> result = keys
.Distinct()
.Select((key, i) => new {
key,
value = values[i % values.Length]
})
.ToDictionary(item => item.key, item => item.value);
Console.Write(string.Join(Environment.NewLine, result));
结果:
[A, green]
[B, blue]
[D, yellow]
[C, green]
[E, blue]