插入带位置的有序哈希表

Inserting into Ordered HashTable with Position

在 PowerShell 中,我有一个包含多个键和值的有序哈希表。根据代码,我向哈希表添加了一个值,但 PowerShell 将添加的键和值附加到列表的末尾。

例如,我的起始哈希表如下所示:

$Hashtable = [ordered]@{
  A = 'a'
  B = 'b'
  C = 'c'
  X = 'x'
  Y = 'y'
  Z = 'z'
}

现在,假设我想在 C = c 下方插入一个 D = d 的键。如果您 运行 a $Hashtable.add('D') = 'd' 那么 PowerShell 会将其附加到列表的底部。

是否有特定的哈希表命令可以让我在列表中准确指定应该放置 add 的位置?

PowerShell 的有序 hashtables are of .NET type System.Collections.Specialized.OrderedDictionary, so you can use the latter's .Insert() method,它允许您为插入指定(0-based)目标索引:

$Hashtable = [ordered]@{
  A = 'a'
  B = 'b'
  C = 'c'
  X = 'x'
  Y = 'y'
  Z = 'z'
}

$Hashtable.Insert(3, 'D', 'd')

之后输出 $Hashtable 会产生以下结果,表明新的 D 条目已插入到现有 C 条目之后(从技术上讲,插入到 X条目):

Name                           Value
----                           -----
A                              a
B                              b
C                              c
D                              d     # <- inserted entry, index 3 (4th pos.)
X                              x
Y                              y
Z                              z