从字典中删除并减少其他键值
本文关键字:其他 键值 字典 删除 | 更新日期: 2023-09-27 18:07:24
我有Dictionary<string, string>
,其中键具有值0,1,2,3,4,etc
,我总是有未知数量的元素。重要的是要像字典一样,而不是像列表一样……
例如我有
some_dict<"0","string a">;
some_dict<"1","string b">;
some_dict<"2","string c">;
some_dict<"3","string d">;
some_dict<"4","string e">;
现在我需要为一些键删除一些项。例如1 and 2
,我可以使用remove
some_dict.remove("1");
some_dict.remove("2");
得到:
some_dict<"0","string a">;
some_dict<"3","string d">;
some_dict<"4","string e">;
但问题是,我需要减少所有以下键。如:
some_dict<"0","string a">;
some_dict<"1","string d">;
some_dict<"2","string e">;
我想使用for
将所有字符串移动到一个地方,然后最后从字典中删除。例如,我需要删除键1:
for(int i=1;i<some_dict.count();++i)
{
some_dict[Convert.ToString(i)] = some_dict[Convert.ToString(i+1)]
}
some_dict.remove(some_dict.count()-1);
我在我的应用程序中写了一些类似的东西,这是工作。但如果我在字典中有500个或更多的值,会这么慢吗?我能用更好的方法吗?
如果你坚持使用你的字典:
// remove whatever you want to remove, then recreate it:
some_dict = some_dict.OrderBy(kv => int.Parse(kv.Key))
.Select((kv, index) => new { pair = kv, index })
.ToDictionary(x => x.index.ToString(), x => x.pair.Value);
但是正如其他人评论的那样,如果你想通过索引访问项目,你应该考虑使用List<string>
,它可以像字典一样使用。如果您想使用字典,还应该考虑使用Dictionary<int, string>
。