如何在嵌套哈希表中调用键?

How to Call Keys in Nested Hash Tables?

我目前正在研究 PowerShell 中的哈希表,我了解到变量可以用作键和值。此时我已经创建了一个散列 table,想看看如何将它嵌套在另一个散列 table 中。所以,这是我正在做的事情的信息:

我创建了一个名为 $avatar 的散列 table。其中有键 "Episode 1""Episode 2""Episode 3" 等,每集的名称作为值。

$avatar = [ordered]@{
      "Episode 1" = "The Boy in the Iceberg";
      "Episode 2" = "The Avatar Returns";
      "Episode 3" = "The Southern Air Temple";
}

然后我想把这个散列 table 放在另一个名称为 $shows.

$shows = [ordered]@{
      "Avatar" = $avatar;
}

所以,这是我的问题。我是否正确编写了嵌套散列 table 的语法?如果不是,应该怎么写?此外,从嵌套哈希 table 调用特定键所需的语法是什么?

这很有趣,可以教你很多只是调查每个小部分。

所以我们知道我们有第一个散列 table,它由“键”和“值”组成

$avatar.keys

Episode 1
Episode 2
Episode 3

$avatar.values

The Boy in the Iceberg
The Avatar Returns
The Southern Air Temple

如果要遍历每个 name/value 对,请使用 .GetEnumerator()

$avatar.GetEnumerator() | ForEach-Object {
    "Name: $($_.name)"
    "Value: $($_.value)"
}

Name: Episode 1
Value: The Boy in the Iceberg
Name: Episode 2
Value: The Avatar Returns
Name: Episode 3
Value: The Southern Air Temple

您可以获取每个键并遍历它们以一次作用于一个

$shows.Keys | ForEach-Object {
    $shows.$_
}

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
Episode 1                      The Boy in the Iceberg                                                                                                                                         
Episode 2                      The Avatar Returns                                                                                                                                             
Episode 3                      The Southern Air Temple 

当你开始嵌套时,只知道你必须剥离每一层。

$shows.Keys | ForEach-Object {
    $shows.$_.GetEnumerator()
}

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
Episode 1                      The Boy in the Iceberg                                                                                                                                         
Episode 2                      The Avatar Returns                                                                                                                                             
Episode 3                      The Southern Air Temple  

$shows.Keys | ForEach-Object {
    foreach($key in $shows.$_.keys){
        $shows.$_.$key
    }
}

The Boy in the Iceberg
The Avatar Returns
The Southern Air Temple

或者很多不同的方式