Powershell -如何迭代字典中值的数组

ovfsdjhp  于 2023-02-08  发布在  Shell
关注(0)|答案(1)|浏览(126)

我在Powershell中有一个特殊的案例,我不认为这会是一个问题,但显然,它是。
我从一个文件中读取了以下结构的数据:

$dict=[ordered]@{
   "key1"=@(
             "value1",
             "value2",
             "value3"          
           );
   "key2"=@(
             "value1",
             "value2"         
           );
}

......等等。一个字典,它的键以字符串数组作为其值。当我试图迭代数组并用每个数组项生成另一个字符串时,字符串数组会“扁平化”为单个字符串。例如:

foreach($Key in $dictionary){

    foreach($item in $Key.Values){
        $newString="New string with $item"
        $newString
        }   
}

输出(仅针对第一个键)为

"New string with value1 value2 value3"

而不是我所期望的

"New string with value1"
"New string with value2"
"New string with value3"

最奇怪的是,当我只打印出值而不生成新字符串时,它会单独打印每一项。
我真的不理解这种行为,从什么应该是一个非常基本的迭代。谁能给我解释一下为什么会发生这种情况,以及什么是正确的方式来做到这一点?

neekobn8

neekobn81#

您需要枚举根数组:

foreach($Key in $dict.GetEnumerator()){
    foreach($item in $Key.Value){
        $newString="New string with $item"
        $newString
    }   
}

或者使用它的实际键:

foreach($Key in $dict.Keys){
    foreach($item in $Dict[$Key].Value){
        $newString="New string with $item"
        $newString
    }   
}

相关问题