回答
List<string> keyList = new List<string>(this.yourDictionary.Keys);
你应该能够只看.Keys
:
Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("abc", 123);
data.Add("def", 456);
foreach (string key in data.Keys)
{
Console.WriteLine(key);
}
如果你要删除循环中的键? – 2016-03-10 22:17:47
@MartinCapodici然后你通常应该期望迭代器打破并拒绝继续 – 2016-03-10 22:32:15
Marc,是的,所以在这种情况下,你会做类似于其他答案的东西并创建一个新列表。 – 2016-03-10 23:01:37
马克Gravell的答案应该为你工作。 myDictionary.Keys
返回实现ICollection<TKey>
,IEnumerable<TKey>
及其非通用对象的对象。
我只是想补充一点,如果你打算访问的价值,以及,你可以通过像这样(修改例)字典循环:
Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("abc", 123);
data.Add("def", 456);
foreach (KeyValuePair<string, int> item in data)
{
Console.WriteLine(item.Key + ": " + item.Value);
}
的问题是有点棘手理解,但我猜测问题在于你在迭代键时尝试从字典中移除元素。我认为在这种情况下,你别无选择,只能使用第二个数组。
ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
if (<your condition here>)
{
lDict.Remove(lKey);
}
}
如果你可以使用通用的列表和字典,而不是一个ArrayList的话,我会,但上面的应该只是工作。
或者这样:
List< KeyValuePair< string, int > > theList =
new List< KeyValuePair< string,int > >(this.yourDictionary);
for (int i = 0; i < theList.Count; i++)
{
// the key
Console.WriteLine(theList[i].Key);
}
这是否会创建密钥副本? (这样你可以安全地枚举) – mcmillab 2012-12-20 21:28:05
我认为最简洁的方式是使用LINQ:
Dictionary<string, int> data = new Dictionary<string, int>();
data.Select(x=>x.Key).ToList();
这可能是“整洁”的方式,但它也是非常昂贵的方式。首先,虽然数据。键将是O(1)操作,并不会真正分配任何东西,您的解决方案将是O(N),并将分配一个新的集合(列表)与所有键。所以,请不要这样做。 – 2017-05-18 04:06:20
要获得所有按键的列表
List<String> myKeys = myDict.Keys.ToList();
请不要忘记:'使用System.Linq;'我需要知道要忽略哪些答案。对不起:) – Bitterblue 2016-06-06 11:17:05
谢谢@Bitterblue。我无法理解为什么'.ToList()'在我多次使用它时抛出一个错误,所以我来到这里寻找答案,并且我意识到我正在工作的文件没有'使用System .Linq' :) – Drew 2016-09-16 20:27:08
不起作用:'Dictionary
适用于混合动力词典tionary,我使用这样的:
List<string> keys = new List<string>(dictionary.Count);
keys.AddRange(dictionary.Keys.Cast<string>());
我常采用这种获得字典内的键和值:(VB.Net)
For Each kv As KeyValuePair(Of String, Integer) In layerList
Next
(layerList是类型字典的(字符串,整数))
我不能相信所有这些令人费解的答案。假设密钥的类型是:string(或者如果你是一个懒惰的开发者,则使用'var'): -
List<string> listOfKeys = theCollection.Keys.ToList();
- 1. 如何将密钥添加到字典列表中的字典?
- 2. 获取字典中的最大密钥
- 3. 解密JSON字典并获取密钥
- 4. 如何获得列表中所有密钥的密钥列表?
- 5. 获取最大值的字典密钥
- 6. Ansible从密钥获取字典值
- 7. Enum:获取密钥列表
- 8. 在python中使用字典值获取字典密钥
- 9. 从字典中获取密钥当值是另一个字典
- 10. 如何使用公共密钥将字典列入字典中?
- 11. 如何从字典中获取密钥和价值?
- 12. 如何从字典中获取密钥python
- 13. 从列表中创建字典并获取python中的最大密钥
- 14. python:一种获取嵌套字典中密钥的排序列表的方法?
- 15. 如何在密钥列表字典中进行比较?
- 16. 从字典列表中提取所有密钥
- 17. 使用字典值获取字典密钥
- 18. 词典:从值中获取密钥
- 19. 如果密钥无效,从字典中获取更改值
- 20. 查找字典值中是否存在列表项并获取密钥
- 21. 如何获取mongodb中的密钥的完整列表
- 22. 如何从多值字典中的任何指定值中获取密钥
- 23. 使用包含“ - ”的密钥获取对象字典中的值
- 24. 获取未知深度的任意字典中的密钥值
- 25. 如何从python中的字典中获取给定名称的密钥
- 26. 如何从Python中的任意长度的嵌套字典中获取密钥
- 27. 获取这些密钥值相等的密钥列表
- 28. 如何获得与字典中最小值关联的密钥?
- 29. 获取对应于字典中最小值的密钥
- 30. 从字典中获取单个密钥的最佳方法?
是否需要使用“this”。 – JerryGoyal 2015-09-30 07:45:26
@JerryGoyal不,没有必要。它只是简单地用于清楚“yourDictionary”是否是对象的一部分,在函数中派生或参数名称的混淆。 – bcdan 2015-11-05 12:09:59