You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:53:10