C#中如何根据Dictionary和指定数组生成对应值数组?
实现方法(以C#为例)
这问题其实很简单,核心就是利用字典的键值映射特性,遍历你的输入数组,逐个从字典里取出对应的值就行。我给你写个具体的实现例子,一看就懂:
首先,咱们先把你的字典和输入数组定义出来:
// 定义颜色映射字典 Dictionary<char, string> colorMap = new Dictionary<char, string>() { {'A', "green"}, {'B', "blue"}, {'C', "yellow"}, {'D', "green"}, {'E', "blue"} }; // 输入的目标数组 char[] inputArray = new char[] {'A', 'B', 'A', 'C', 'B', 'D', 'E'};
接下来有两种常见的实现方式:
方式一:使用LINQ快速转换
如果你的项目已经引用了System.Linq,一行代码就能搞定,非常简洁:
using System.Linq; // 遍历输入数组,从字典中取对应值生成结果数组 string[] resultArray = inputArray.Select(key => colorMap[key]).ToArray();
方式二:传统循环遍历
要是你不想用LINQ,或者需要更直观的执行过程,用普通的for循环也可以:
// 初始化结果数组,长度和输入数组一致 string[] resultArray = new string[inputArray.Length]; for (int i = 0; i < inputArray.Length; i++) { // 逐个从字典中取值赋值到结果数组 resultArray[i] = colorMap[inputArray[i]]; }
额外注意事项
要确保输入数组里的所有键都存在于字典中,不然会抛出KeyNotFoundException异常。如果有可能出现不存在的键,可以用TryGetValue来安全取值,避免崩溃:
// 安全取值写法,键不存在时返回默认值(比如"unknown") string[] resultArray = inputArray.Select(key => { colorMap.TryGetValue(key, out var color); return color ?? "unknown"; }).ToArray();
这样处理完之后,resultArray就是你想要的[green,blue,green,yellow,blue,green,blue]啦!
内容的提问来源于stack exchange,提问作者Zehelautorus
相关产品推荐
相关产品推荐

