遍历包含 Powershell 中值列表的哈希表
Iterate through Hashtable containing List of values in Powershell
我正在尝试在 powershell 中将键和值列表一起打印在单个字符串中。
我有这样的东西
List(dict(key:value)) (key= string , value=list<String>)
所以我的输入是这样的
dict(
"apple"=$list1
"banana"=$list2
"orange"=$list3)
$list1=@('red','green')
$list2=@('yellow','black')
$list3=@('orange')
现在我想要这样的输出:
$Final_ans= apple,red_green banana,yellow_black orange,orange
如何在 PowerShell 中执行此操作?我无法像这样迭代。
我尝试了几种方法,但它给了我输出 System Collection.HashTable
假设您有一个哈希表或字典,其中所有键都是字符串,值条目是字符串数组,如下所示:
$list1 = @('red','green')
$list2 = @('yellow','black')
$list3 = @('orange')
$hashtable = @{
"apple" = $list1
"banana" = $list2
"orange" = $list3
}
(@{}
是 PowerShell 的哈希表(无序字典)文字的本机语法。)
您可以像这样枚举每个 key/value 对:
$hashtable.GetEnumerator() |ForEach-Object {
$_.Key # this will resolve to the key (ex. "apple")
$_.Value # this will resolve to the values (ex. @('red', 'green'))
}
因此,要构造一个类似于您描述的字符串,我们可以这样做:
@($hashtable.GetEnumerator() |ForEach-Object {
$_.Key,($_.Value -join '_') -join ','
}) -join ' '
在这里,我们使用 -join
运算符连接具有不同分隔符的各个字符串:
$_.Value -join '_'
将值对(例如 @('red', 'green')
)转换为类似于 red_green
的字符串
$_.Key,(...) -join ','
将我们在上一步创建的key + string 变成类似apple,red_green
的字符串
@(...) -join ' '
然后将所有这些字符串变成一个大的 space 分隔字符串 apple,red_green banana,yellow_black orange,orange
我正在尝试在 powershell 中将键和值列表一起打印在单个字符串中。
我有这样的东西
List(dict(key:value)) (key= string , value=list<String>)
所以我的输入是这样的
dict(
"apple"=$list1
"banana"=$list2
"orange"=$list3)
$list1=@('red','green')
$list2=@('yellow','black')
$list3=@('orange')
现在我想要这样的输出:
$Final_ans= apple,red_green banana,yellow_black orange,orange
如何在 PowerShell 中执行此操作?我无法像这样迭代。 我尝试了几种方法,但它给了我输出 System Collection.HashTable
假设您有一个哈希表或字典,其中所有键都是字符串,值条目是字符串数组,如下所示:
$list1 = @('red','green')
$list2 = @('yellow','black')
$list3 = @('orange')
$hashtable = @{
"apple" = $list1
"banana" = $list2
"orange" = $list3
}
(@{}
是 PowerShell 的哈希表(无序字典)文字的本机语法。)
您可以像这样枚举每个 key/value 对:
$hashtable.GetEnumerator() |ForEach-Object {
$_.Key # this will resolve to the key (ex. "apple")
$_.Value # this will resolve to the values (ex. @('red', 'green'))
}
因此,要构造一个类似于您描述的字符串,我们可以这样做:
@($hashtable.GetEnumerator() |ForEach-Object {
$_.Key,($_.Value -join '_') -join ','
}) -join ' '
在这里,我们使用 -join
运算符连接具有不同分隔符的各个字符串:
$_.Value -join '_'
将值对(例如 @('red', 'green')
)转换为类似于 red_green
$_.Key,(...) -join ','
将我们在上一步创建的key + string 变成类似apple,red_green
@(...) -join ' '
然后将所有这些字符串变成一个大的 space 分隔字符串 apple,red_green banana,yellow_black orange,orange