可以通过列表填充字典值而不循环吗?

时间:2012-05-09 20:17:28

标签: c# dictionary

我们可以有类似的东西 -

Dictionary<string, string> dict = new Dictionary<string, string>();

List<string> keysList=  new List<string>();
List<string>valuesList=  new List<string>();

//Assuming both the list have the same number of items
dict.keys = keysList;
dict.values = valuesList;

大多数情况下,我想知道是否有办法通过直接将它们分配给列表来填充键和值?

2 个答案:

答案 0 :(得分:5)

  

大多数情况下,我想知道是否有办法通过直接将它们分配给列表来填充键和值?

不,但只需压缩它们然后使用ToDictionary

var dict = keysList.Zip(valuesList, (key, value) => Tuple.Create(key, value))
                   .ToDictionary(pair => pair.Item1, pair => pair.Item2);

答案 1 :(得分:1)

字典,内部不会将数据存储为两个列表。它将数据存储在哈希表中,这意味着它需要获取每个键,为其生成哈希,然后将项放在与该哈希对应的位置。因此,添加一组项目的唯一方法就是遍历组并添加每个项目。你可以使用LINQ ToDictionary方法,如另一个答案所述,但内部所有它将循环遍历每个项目并将其添加到字典中。这可以防止你看到循环,但循环仍在那里。