如何解决C#获取嵌套字典的嵌套值总和
我有一本具有以下结构的字典:
{
"group_1": {
"a": 1.0,"b": 1.5,"c": 2.0,"d": 4.0
},"group_2": {
"a": 3.0,"b": 3.5,"c": 6.0,"d": 4.7
},"group_3": {
"a": 0,"b": 1.9,"c": 2.1,"d": 3.0
},"group_4": {
"a": 0.4,"b": 1.3,"c": 1.0,"d": 2.0
}
}
我想做的是将所有同级字典的所有对应值相加,然后创建一个新的字典,如下所示:
{
"a": 3.4,"b": 7.2,"c": 11.1,"d": 13.7
}
我想使用一种更简洁,更优雅的方法,它必须是动态的,因为我不确定是否有多少组词典或有多少个字母。
我已经尝试过foreach方法,但是我真的不明白如何在每个循环中仅获取每个字典的位置值。
var formatedDataList = new Dictionary<string,decimal>();
foreach (KeyValuePair<string,Dictionary<string,string>> group in fortmatedData)
{
foreach (KeyValuePair<string,string> alternative in group.Value)
{
...
}
}
有人可以帮助我吗?
解决方法
您可以使用LINQ:
0
,
只需遍历内部字典并添加键(如果不存在):
dict.Aggregate(new Dictionary<string,double>(),(x,y) => {
foreach (var kvp in y.Value) {
x[kvp.Key] = (x.TryGetValue(kvp.Key,out var sum) ? sum : 0) + kvp.Value;
}
return x;
});
此解决方案的复杂度比带有分组的解决方案小3倍。可用于更大的数据集。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。