Wie bekomme ich einen Hash-Tabellenschlüssel, der einen bestimmten Wert hat?

8

Ich habe eine Hash-Tabelle, in der Keys basierend auf Wert verwendet werden.

Zum Beispiel.

%Vor%

Ich möchte die Schlüssel erhalten, die Werte True haben. (Ich werde den Schlüssel an ein anderes Skript als Parameter übergeben).

Ich habe es versucht, aber ich denke, einige, die ich vermisse, da es die Schlüssel nicht auflistet.

%Vor%

Wie bekomme ich den Namen der Komponente, die als True bezeichnet wurde? Auch würde ich gerne wissen, ob Hash-Tabelle eine kluge Wahl für diese Art von Arbeit ist. Weil ich dachte, dass Hash-Tabelle hauptsächlich für die Verarbeitung der Werte verwendet werden wird.

    
Samselvaprabu 06.07.2012, 07:24
quelle

5 Antworten

9

Hi, das sollte funktionieren, was du willst.

%Vor%     
justinf 06.07.2012, 07:49
quelle
11
%Vor%     
David Brabant 06.07.2012 08:25
quelle
6

Ich weiß, das ist alt, aber ich sah das auf meiner Suche nach einem anderen Problem und fragte mich, warum Sie sich mit Enumerators beschäftigen. Erstellen Sie den Code genau wie die Frage in der richtigen Sprache:

Gib mir alle Schlüssel, wo der Wert 'True' ist.

%Vor%

Aus Gründen der Konsistenz würde ich das in @() einkapseln, um ein Array zu erhalten, selbst wenn es nur ein oder kein Ergebnis gibt.

Was die Lösung betrifft, die der Fragesteller hatte, ist das Problem, dass $_ ein String ist und .Value nicht der Wert des Schlüssels ist. Es existiert einfach nicht in einem String. Sie müssen den Wert der Hashtabelle mit $_ als Schlüssel ermitteln, um sie zu vergleichen.

    
Wiz 29.11.2013 08:19
quelle
3

Das Problem beim Filtern von Hashtabellen in PowerShell besteht darin, dass Sie die Schlüssel / Wert-Paare nicht iterieren können.

Nehmen wir an, Sie haben eine Sammlung:

%Vor%

Sie würden erwarten,

verwenden zu können %Vor%

in PowerShell, aber das ist nicht möglich.

Sie müssen daher auf den Enumerator zurückgreifen:

%Vor%     
oɔɯǝɹ 24.02.2017 15:35
quelle
0

Sie können auch die Methode Dictionary.Keys ' Where verwenden, die alle Elemente zurückgibt, bei denen eine Bedingung zutrifft. Diese Bedingung könnte ein Lambda sein, der bestätigt, dass der getestete Schlüssel $_ sich auf einen "True" -Wert im Wörterbuch bezieht.

%Vor%     
nitzel 01.02.2018 12:13
quelle

Tags und Links