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

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

Link zu diesem Kommentar
  • Beste Lösung
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

Link zu diesem Kommentar

 

 

@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

Link zu diesem Kommentar

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.
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...