c# - 如何将值添加到 2D 字典
问题描述
我有这本字典,我想在其中映射新值
Dictionary<string, Dictionary<string, int>> myDictionary =
new Dictionary<string, Dictionary<string, int>>();
我想做这样的事情:
myDictionary.Add(variableType.A.ToString(), new Dictionary<string, int>(variableType.A.ToString(), 0));
修复代码的第二部分是个好主意?
解决方案
你可以这样做:
Dictionary<string, Dictionary<string, int>> myDictionary = new Dictionary<string, Dictionary<string, int>>();
var newValues = new Dictionary<string, Dictionary<string, int>> {
{
"test",
new Dictionary<string, int>
{
["one"] = 1, // C#6, equivalent of doing {"one", 1}
["two"] = 2
}
}
};
//if you just want to assign.
myDictionary = newValues;
//if you want to add more entries to the dictionary
foreach (var (key, val) in newValues)
{
myDictionary.Add(key, val);
}
或者,如果您想创建一个函数:
public Dictionary<string, Dictionary<string, int>> AddValuesToDictionary(string key, Dictionary<string, int> value)
{
var values = new Dictionary<string, int>();
foreach ( var (keys, vals) in value)
{
values.Add(keys, vals);
}
return new Dictionary<string, Dictionary<string, int>> {
{
key,
values
}
};
}
并像这样使用它:
Dictionary<string, Dictionary<string, int>> myDictionary = new Dictionary<string, Dictionary<string, int>>();
var p = new Program();
var newValues = p.AddValuesToDictionary(
"test",
new Dictionary<string, int>()
{
["one"] = 1,
["two"] = 2
}
);
foreach (var (key, val) in newValues)
{
myDictionary.Add(key, val);
}
使用上述函数的第三种方法:
var myDictionary = new Dictionary<string, Dictionary<string, int>>();
var p = new Program();
var newValues = new List<Dictionary<string, Dictionary<string, int>>>();
newValues.Add(p.AddValuesToDictionary(
"test",
new Dictionary<string, int>()
{
["one"] = 1,
["two"] = 2
}
));
newValues.Add(p.AddValuesToDictionary(
"test2",
new Dictionary<string, int>()
{
["three"] = 3,
["four"] = 4
}
));
foreach (var entry in newValues)
{
foreach (var (key, val) in entry)
{
myDictionary.Add(key, val);
}
}
推荐阅读
- vba - 如何通过 dlookup 功能启用和禁用表单上的按钮?
- c++ - control font and character set in console using visual studio c++
- azure-keyvault - 从 Azure Key Vault 检索机密:任务
还是常规字符串? - r - Shift lines in plot for metafor object
- c# - 如果我们想利用依赖注入,我们还应该创建实例吗?
- angular - Error formControlName must be used with a parent formGroup directive. You'll want to add a formGroup
- ruby-on-rails - Rails turbolink js issue one click dropdown js not load
- c# - dotnet 的 tcp 套接字的发送方法究竟什么时候不发送所有字节?
- python - 如何为特定字符串编写正则表达式?
- python - ValueError: Error when checking input: expected input_1 to have shape (50,) but got array with shape (1,) with ELMo embeddings and LSTM