Jump to content

PowerShell: Wertzuweisung an Hashtable durch zwei Arrays?


Direkt zur Lösung Gelöst von cj_berlin,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Guten Abend zusammen,

 

kleine Skizze meiner Gedankengänge:

#Arrayvariable für die keys
$keys=@()
for($i=0; $i -lt 10; $i++) {$keys+='Name'+$i}

#Arrayvariable für die values
$values=@()
for($i=0; $i -lt 10; $i++) {$values+=$i}

#Objektvariable Hashtable
$ht=@{}
$ht=@{$keys=$values}

 

 

Meine Frage:

Ich würde 10Zeilen und 2Spalten erwarten.

Dem ist leider nicht so - aber warum?

 

 

Schöne Grüße von der schwäbischen Alb,

Marco

  • Beste Lösung
Geschrieben
vor 32 Minuten schrieb Mase_:
 

Ich würde 10Zeilen und 2Spalten erwarten.

Dem ist leider nicht so - aber warum?

Naja, zwei Spalten hast Du schon, die hat eine Hashtable immer ;-)

Der Konstruktor einer Hashtable ist keine Zuweisung, daher kann man hier kein Array von Values zu einem Array von Keys gleicher Länge zuweisen.

Siehe auch hier: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7.2

Geschrieben

 

 

@cj_berlin:

Danke für Dein Input.

 

Zitat

Naja, zwei Spalten hast Du schon

Zauberei, nicht wahr? ;)

 

Zitat

Der Konstruktor [...] keine Zuweisung...

Ewig schade. Bleibt also eine Lösung via loop.

 

Beispielhaft:

#Arrayvariable für die keys
$keys=@()
for($i=0; $i -lt 10; $i++) {$keys+='Name'+$i}

#Arrayvariable für die values
$values=@()
for($i=0; $i -lt 10; $i++) {$values+=$i}

#Objektvariable Hashtable
$ht=[ordered]@{}

for($i=0;$i -lt 10;$i++)
{
    $ht[$keys[$i]] = $values[$i]
}

 

Später noch (zur Wiederverwendbarkeit) neutral formuliert in eine Funktion ausgelagert.

 

 

Besten Dank.

 

gruß

Marco

Geschrieben

Achtung! Ein Ordered Dictionary ist keine Hashtable. Hier ein paar Unterschiede:

  • OD hat keine der Methoden ContainsKey(), ContainsValue() und Clone(). 
  • Und obgleich OD keine Methode Clone() hat, ist das Zuweisungsverhalten so, dass man sie gelegentlich bräuchte.
  • Dafür hat OD die Methoden Insert() und RemoveAt(), die für HT keinen Sinn ergeben.
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...