piet: Hash nach gleichem Schlüssel suchen

Hallo,

in meinem Hash sind mehrere Schlüssel, jedoch müssen unterschiedliche Werte
sein.

d.h. Im ganzen Hash darf niemals der gleiche Wert vorhanden sein.

Dies will ich durch eine Funktion überprüfen. Wenn z.B. der Wert vom Schlüssel "Huber" mit dem Wert vom Schlüssel "Meier" gleich ist muss ich dies melden. Es sollen aber alle Schlüssel überprüft werden und wenn nötig mehrere Meldungen ausgegeben werden.

Trotzdem darf natürlich Wert vom Schlüssel "Huber" ist gleich mit Wert vom Schlüssel "Meier" und später dann Wert vom Schlüssel "meier" ist gleich mit Wert vom Schlüssel "Huber" nicht doppelt gemeldet werden.

Natürlich wäre der Code von jemanden super, aber ich möchte es gerne verstehen wie ich so etwas lösen könnte. Vielleicht hat jemand etwas in der Schublade.

Gruß
        piet

  1. Also jede Meldung für ein gleiches Paar nur einmal?

    Ich würd die Werte in einen neuen Hash einfügen. Bei jedem Einfügen prüfst du dann ob der Wert schon drin steht. Wenn nicht -> rein damit. Wenn schon -> Meldung ausgeben.

    1. Also jede Meldung für ein gleiches Paar nur einmal?

      Ich würd die Werte in einen neuen Hash einfügen. Bei jedem Einfügen prüfst du dann ob der Wert schon drin steht. Wenn nicht -> rein damit. Wenn schon -> Meldung ausgeben.

      Mahlzeit,

      nach deiner Methode müsste ich vor jedem einfügen alle key durchlaufen um die Werte zu erhalten. Diese dann vergleichen mit neuem Wert

      Ich dachte gerade... vielleicht ginge es das Hash umzudrehen.
      Schlüssel -> wert neues Hash wert -> schlüssel.
      d.h. der Wert wird der Schlüssel und der Schlüssel wird ales Wert eingefügt.

      Dann hätte ich auch das Problem mit doppelter Meldung ausgeschlossen.......denke ich, oder !!!

      Gruß
             piet

      1. n'abend,

        nach deiner Methode müsste ich vor jedem einfügen alle key durchlaufen um die Werte zu erhalten. Diese dann vergleichen mit neuem Wert

        nein. Sofern du hashbare Werte hast, legst du einfach einen inversen hash an.
        Da ich kein Perl kann (und auch nicht können will), hier pseudo-code:

        function insert( key, value )  
        {  
          if( value in valueHash )  
            throw error( "Wert »{value}« bereits unter Schlüssel »{key}« bekannt" )  
          
          keyHash[ key ] = value  
          valueHash[ value ] = key  
        }  
        
        

        weiterhin schönen abend...

        --
        #selfhtml hat ein Forum?
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
        1. Abend,

          danke genau so geht es.

          Gruß
               piet