delphi - 通用字典类是否有通过索引获取键的方法?

标签 delphi dictionary

这可能是一个非常简单的问题,但我认为我是精神盲或什么的;我如何通过 Delphi (10.1) 中的字典类中的索引获取键。我的意思是该结构有一个名为 Count 的属性,所以它必须有某种数组或列表,为什么我不能通过索引获取键。

我还在 Dictionary 类中尝试了 KeyCollection 属性,但它也没有任何用处。我需要这样的东西:

key: string;
key := dicTest.GetKey(keyIndex);

非常感谢。

最佳答案

Delphi RTL 通用字典是无序的。由于无序,容器中的项目没有有意义的索引。

可以使用 Keys 属性枚举键:

var
  dict: TDictionary<string, Integer>;
  key: string;
....
for key in dict.Keys do
  Writeln(key);

同样,可以使用 Values 属性枚举值。

var
  dict: TDictionary<string, Integer>;
  value: Integer;
....
for value in dict.Values do
  Writeln(value);

如果您想枚举键/值对,那么字典本身会为此提供一个枚举器:

var
  dict: TDictionary<string, Integer>;
  item: TPair<string, Integer>;
....
for item in dict do
  Writeln(item.Key, ', ', item.Value);

请注意,对于这些枚举器中的每一个,都不能保证项目的顺序。向字典中添加新项等简单操作可能会导致枚举项的顺序发生变化。

关于delphi - 通用字典类是否有通过索引获取键的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572176/

相关文章:

python - 映射 lambda 创建字典

c# - 字典 TryGetValue NullReferenceException

asp.net - 找不到文件“C :\WINDOWS\TEMP\xxxx. dll

delphi - Spring4d:Spring.Collections.IEnumerator 和 System.IEnumerator

Delphi - 使用 GetPropValue() 获取属性值

dictionary - 类型 '[String, AnyObject?]' 不符合 AnyObject 协议(protocol)? : why?

delphi - 模仿外部点击弹出菜单

Java JNA 无效内存访问

python - Django - 类内属性的上下文字典

python - 从矩阵到单行字典