将List转换为Hashtable的最佳方法是什么?假设我有一个类似("Key",$value,"Key2",$value2)的列表将其转换为Hashtable的最短语法是什么?
("Key",$value,"Key2",$value2)
unftdfkk1#
请尝试以下操作
$table = new-object System.Collections.Hashtable for ( $i = 0; $i -lt $list.Length; $i += 2 ) { $table.Add($list[$i],$list[$i+1]); }
wf82jlnq2#
Function ConvertTo-Hashtable($list) { $h = @{} while($list) { $head, $next, $list = $list $h.$head = $next } $h } ConvertTo-Hashtable ("Key",1,"Key2",2)
j9per5c43#
如果列表由NameValuePair对象组成,则可以用途:
NameValuePair
Function ConvertListOfNVPTo-Hashtable($list) { $h = @{} $list | ForEach-Object { $h[$_.Name] = $_.Value } return $h }
lvmkulzt4#
$h = @{} 0..($l.count - 1) | ? {$_ -band 1} | % {$h.Add($l[$_-1],$l[$_])} $h = @{} 0..($l.count - 1) | ? {$_ -band 1} | % {$h.($l[$_-1]) = $l[$_]} $h = @{} $i = 0 while ($i -lt $l.count) {$h.Add($l[$i++],$l[$i++])}
blmhpbnm5#
不如这样:
$ht = @{} $key = ""; ("Key",5,"Key2",6) | foreach ` { if($key) { $ht.$key = $_; $key=""; } else {$key=$_} }
6ju8rftf6#
function Select-Hashtable { [CmdletBinding()] param( [Parameter(ValueFromPipeline)] [PSObject[]]$InputObject, [Parameter(Mandatory)] [string]$Property ) begin { $hashtable = [Hashtable]::new() } process { $InputObject | %{ $hashtable[$_."$Property"] = $_} } end { $hashtable } }
那么(一个毫无意义的例子):
$items = Get-ChildItem -Path $path | Select-Hashtable -Property Name $documents = $items['Documents']
6条答案
按热度按时间unftdfkk1#
请尝试以下操作
wf82jlnq2#
j9per5c43#
如果列表由
NameValuePair
对象组成,则可以用途:lvmkulzt4#
blmhpbnm5#
不如这样:
6ju8rftf6#
那么(一个毫无意义的例子):