首页 > 解决方案 > 如何调用嵌套哈希表中的键?

问题描述

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

我创建了一个名为$avatar. 其中包括键"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";
}

所以我想把这个哈希表放在另一个名为$shows.

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

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

标签: powershellnestedhashtable

解决方案


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

所以我们知道我们有第一个哈希表,它由“键”和“值”组成

$avatar.keys

Episode 1
Episode 2
Episode 3

$avatar.values

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

如果要遍历每个名​​称/值对,请使用.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

或者很多不同的方式


推荐阅读