【问题标题】:Inserting into Ordered HashTable with Position插入带位置的有序哈希表
【发布时间】:2021-10-02 16:25:34
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: powershell hashtable ordereddictionary


    【解决方案1】:

    PowerShell 的有序hashtables 是.NET 类型System.Collections.Specialized.OrderedDictionary,因此您可以使用后者的.Insert() method,它允许您指定(基于0)的目标索引插入:

    $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
    

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      相关资源
      最近更新 更多