如何在嵌套Dictionary中通过指定键查找内部字典的值
如何从嵌套字典中获取对应值?
嘿,这个需求其实挺常见的,针对你定义的Dictionary<string, Dictionary<int, int>>类型的newIds变量,我给你两种实用的实现方式,分别对应不同的场景:
方式1:直接索引访问(简单但需确保键存在)
如果你确定外部键NAME和内部键1一定存在于字典中,可以直接通过两层索引取值:
// 假设NAME是已定义的字符串键,比如string NAME = "张三"; int targetValue = newIds[NAME][1];
⚠️ 注意:如果NAME不存在于外部字典,或者内部字典里没有1这个键,这种写法会直接抛出KeyNotFoundException,所以只适合你能100%保证键存在的场景。
方式2:安全访问(推荐,避免异常)
如果不确定键是否存在,更稳妥的做法是用TryGetValue方法分两步验证,这样不会抛出异常,还能优雅处理键不存在的情况:
string NAME = "你的外部字符串键"; int innerKey = 1; // 第一步:尝试获取外部键对应的内部字典 if (newIds.TryGetValue(NAME, out var innerDictionary)) { // 第二步:从内部字典中尝试获取对应的值 if (innerDictionary.TryGetValue(innerKey, out var targetValue)) { // 成功获取到值,在这里处理逻辑 Console.WriteLine($"找到对应的值:{targetValue}"); } else { // 内部键不存在的处理逻辑 Console.WriteLine($"内部字典中没有键{innerKey}"); } } else { // 外部键不存在的处理逻辑 Console.WriteLine($"外部字典中没有键{NAME}"); }
你也可以把这两个判断合并成一行,让代码更简洁:
if (newIds.TryGetValue(NAME, out var innerDict) && innerDict.TryGetValue(innerKey, out var targetValue)) { // 处理获取到的值 } else { // 键不存在的处理 }
这种方式在实际项目中更常用,因为它能避免意外的异常崩溃,让程序的鲁棒性更强。
内容的提问来源于stack exchange,提问作者Md. Parwez Akhtar
相关产品推荐
相关产品推荐

