我有一个具有两个类似键的字典,其中一个是拼写错误的,因此它创建了另一个键,我想要对它的值进行求和,并删除拼写错误的键/值对。
如果我有一个部门字典,以部门名称为键,以该部门的人员人数为值,我想将“市场营销”和“市场营销”的值相加,并删除拼错的键/值对“营销”。
var departments = new Dictionary<string, int>()
{
{ "HR", 33 },
{ "Management", 8 },
{ "Marketing", 21 },
{ "Marketin", 4 },
{ "Sales", 44 }
};我希望这本字典看起来像这样:
var departments = new Dictionary<string, int>()
{
{ "HR", 33 },
{ "Management", 8 },
{ "Marketing", 25 },
{ "Sales", 44 }
};字典已经创建好了,所以我只使用初始化来进行说明。
发布于 2016-07-07 18:34:38
departments["Marketing"] += departments["Marketin"];
departments.Remove("Marketin");发布于 2016-07-07 18:49:06
下面是我关于更多“泛型”方法的草图:
var normalisedDepartments =
departments.GroupBy(x => Normalise(x.Key), y => y.Value)
.ToDictionary(x => x.Key, y => y.Sum());
private static string Normalise(string key)
{
if (key == "Marketin")
{
return "Marketing";
}
return key;
}然后,您可以调整规范化方法,以便它识别其他格式错误的键,如果有更多的这些键。
发布于 2016-07-07 18:36:24
下面是一个代码示例,它说明了您可以使用的字典功能来做您想做的事情。
至于您需要使用这些功能的哪一个组合来完成您的确切目的,我将把它作为练习留给您。如果你需要更多的帮助。留下一条评论,解释你不明白的事情。
//how to get a value in your dictionary
string myValue = departments["Marketin"];
//how to update a value in your dictionary
departments["Marketing"] = 5;
//how to remove a value in your dictionary
departments.Remove("Marketin");
//how to iterate over your dictionary
foreach(var department in departments)
{
//only print the value if it's "Marketin"
if(department.Key == "Marketin")
{
Console.WriteLine(department.Value);
}
}https://stackoverflow.com/questions/38252832
复制相似问题