C# 使用键和值数组初始化字典
我想用键和值数组初始化字典,如下所示:C# 使用键和值数组初始化字典,c#,dictionary,C#,Dictionary,我想用键和值数组初始化字典,如下所示: int[] keys = {1, 2, 3}; string[] values = {"a", "b", "c"}; Dictionary<int, string> dict = new Dictionary<int, string>(keys, values); int[]键={1,2,3}; 字符串[]值={“a”、“b”、“c”}; Dictionary dict=新字典(键、值); 是否有一种不迭代数组的快速方法,如:
int[] keys = {1, 2, 3};
string[] values = {"a", "b", "c"};
Dictionary<int, string> dict = new Dictionary<int, string>(keys, values);
int[]键={1,2,3};
字符串[]值={“a”、“b”、“c”};
Dictionary dict=新字典(键、值);
是否有一种不迭代数组的快速方法,如:
for (int i = 0; i < keys.Length; ++i)
{
dict.Add(keys[i], values[i]);
}
for(int i=0;i
编辑:有人将此问题标记为一个问题的副本,但它们是不相关的,因为该问题的目的不是将“键-值”集合转换为字典,而是将对象列表(每个对象包含一个键和一个值列表)转换为字典 使用Zip()
:
它不会更快,而且据我所知,它实际上可能会慢一点,尽管可能还不够重要
与for
循环相比,它有一个明显的优势,即Zip()
不会在values.Length
时引发异常
一次,您就可以保存几个字符:
var dict = keys.Zip(values, (num, str) => (num: num, str: str))
.ToDictionary(ns => ns.num, ns => ns.str);
使用Zip()
:
它不会更快,而且据我所知,它实际上可能会慢一点,尽管可能还不够重要
与for
循环相比,它有一个明显的优势,即Zip()
不会在values.Length
时引发异常
一次,您就可以保存几个字符:
var dict = keys.Zip(values, (num, str) => (num: num, str: str))
.ToDictionary(ns => ns.num, ns => ns.str);
复杂度的下限是O(n),所以你无论如何都要迭代。复杂度的下限是O(n),所以你无论如何都要迭代。