16 Stimmen

Umwandlung einer Liste von Schlüssel-Wert-Paaren in eine Hashtabelle

Wie kann ich eine Liste am besten in eine Hashtabelle umwandeln?

Angenommen, ich habe eine Liste wie ("Key",$value,"Key2",$value2)

Wie lautet die kürzeste Syntax für die Umwandlung in eine Hashtabelle?

1 Stimmen

In Perl war es einfacher, nicht wahr? :)

17voto

JaredPar Punkte 699699

Versuchen Sie Folgendes

$table = new-object System.Collections.Hashtable
for ( $i = 0; $i -lt $list.Length; $i += 2 ) {
  $table.Add($list[$i],$list[$i+1]);
}

13voto

Doug Finke Punkte 6522
Function ConvertTo-Hashtable($list) {
    $h = @{}

    while($list) {
        $head, $next, $list = $list
        $h.$head = $next
    }

    $h
}

ConvertTo-Hashtable ("Key",1,"Key2",2)

7voto

OzBob Punkte 3737

Wenn Ihre Liste aus folgenden Elementen besteht NameValuePair Objekte, dann können Sie verwenden:

Function ConvertListOfNVPTo-Hashtable($list) {
    $h = @{}
    $list | ForEach-Object {
        $h[$_.Name] = $_.Value
    }
    return $h
}

2voto

zdan Punkte 27066

Wie wäre es damit:

$ht = @{}
$key = "";
("Key",5,"Key2",6) | foreach `
{  
    if($key)  
    {
        $ht.$key = $_; 
        $key=""; 
    } else 
    {$key=$_}   
}

2voto

user193454 Punkte 21
$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++])}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X