sai*_*ler 22 c# dictionary list
我创建了字典对象
Dictionary<string, List<string>> dictionary =
new Dictionary<string,List<string>>();
Run Code Online (Sandbox Code Playgroud)
我想将字符串值添加到给定单个键的字符串列表中.如果密钥尚不存在,那么我必须添加一个新密钥.List<string>
是不是预定义的,我的意思是我没有创建任何列表对象,然后提供给dictionary.Add("key",Listname)
.如何动态创建此列表对象dictionary.Add("key",Listname)
,然后将字符串添加到此列表.如果我必须添加100个密钥,那么在执行dictionary.Add
指令之前我是否必须创建100个列表?我是否必须对此列表的内容进行pedefine?
谢谢.
Ada*_*rth 30
更新:TryGetValue
在您拥有列表的情况下使用仅执行一次查找来检查是否存在:
List<int> list;
if (!dictionary.TryGetValue("foo", out list))
{
list = new List<int>();
dictionary.Add("foo", list);
}
list.Add(2);
Run Code Online (Sandbox Code Playgroud)
var dictionary = new Dictionary<string, List<int>>();
if (!dictionary.ContainsKey("foo"))
dictionary.Add("foo", new List<int>());
dictionary["foo"].Add(42);
dictionary["foo"].AddRange(oneHundredInts);
Run Code Online (Sandbox Code Playgroud)
或者List<string>
像你的情况一样.
顺便说一句,如果您知道要添加到动态集合中的项目数量,例如List<T>
,支持获取初始列表容量的构造函数:new List<int>(100);
.
这将获取预先满足指定容量所需的内存,而不是每次开始填充时抓取小块.如果您知道有100个键,则可以对词典执行相同的操作.
如果我理解你想要的东西:
dictionary.Add("key", new List<string>());
Run Code Online (Sandbox Code Playgroud)
后来...
dictionary["key"].Add("string to your list");
Run Code Online (Sandbox Code Playgroud)
Dictionary<string, List<string>> dictionary = new Dictionary<string,List<string>>();
foreach(string key in keys) {
if(!dictionary.ContainsKey(key)) {
//add
dictionary.Add(key, new List<string>());
}
dictionary[key].Add("theString");
}
Run Code Online (Sandbox Code Playgroud)
如果密钥不存在,List
则添加new (在if中).否则密钥存在,所以只需List
在该密钥下添加一个新值即可.