Announcement

Collapse
No announcement yet.

unterschiedliche Elemente in Array zählen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • unterschiedliche Elemente in Array zählen

    Hi Com,

    ich habe folgendes Problem. Über eine Schleife fülle ich ein Array und möchte gerne danach wissen, wie oft jedes einzelne Element dort vorgekommen ist, also z.B. 5 Mal "Auto", 3 Mal "Bus" usw. Die Elemente haben immer eine unterschiedliche Reihenfolge und müssen auch nicht zwingend vorkommen.

    Weiß jmd. Rat?

  • #2
    Statt einem Arrays eine Hashmap nehmen. Als Key dein Auto, als value den Wert um eins erhöhen, wenn du ein "Auto" dazunimmst
    Christian

    Comment


    • #3
      Sorry, habe noch nie mit einer Hashmap gearbeitet. Hast du einen kurzen Ansatz?

      Comment


      • #5
        Habe mal kurz mit http://programmingbulls.com/perl-hashmap
        experimentiert. Da bekomme ich dann sowas, wie
        Auto: 5
        Bus: 3
        Fahrrad: 4
        Bus: 6
        U-Bahn: 3
        Auto: 10

        ,also immer die Werte, die hintereinander vorkommen.

        Woher weiss ich (oder Perl^^) jetzt, welche Werte addiert werden müssen?

        P.S. "Auto" kann ich nicht fest eintragen, da dynamisch ($transportmittel)
        Zuletzt editiert von ronjambo; 07.01.2011, 18:41.

        Comment


        • #6
          also immer die Werte, die hintereinander vorkommen.

          Verstehe ich nicht

          Woher weiss ich (oder Perl^^) jetzt, welche Werte addiert werden müssen?
          Verstehe ich auch nicht

          Das Aufnehmen in die Hashmap sollte wie folgt gehen:

          Wert lesen (woher auch immer) -> bsp "Auto"
          Der Wert ist der Key für die Hashmap

          Ist der Key vorhanden?
          Wenn nein -> neuen Key in die Hashmap packen und den Value auf 1 setzen
          Wenn ja -> Value aus der Hashmap lesen und um 1 erhöhen und wieder reinschreiben
          Christian

          Comment


          • #7
            Originally posted by Christian Marquardt View Post
            Wert lesen (woher auch immer) -> bsp "Auto"
            Der Wert ist der Key für die Hashmap

            Ist der Key vorhanden?
            Wenn nein -> neuen Key in die Hashmap packen und den Value auf 1 setzen
            Wenn ja -> Value aus der Hashmap lesen und um 1 erhöhen und wieder reinschreiben
            Klingt logisch, man muss nur wissen, wie...

            Ein Ansatz, der nicht hinhaut:

            my %hashmap = ();
            my $value = 1;
            my $transportmittel = "";

            while (my @foo = $bar->fetchrow_array()) {
            $transportmittel = $foo[0];

            if (exists $hashmap{$transportmittel}) {
            $hashmap{$transportmittel} = $value++;
            } else {
            $hashmap{$transportmittel} = 1;
            }
            }
            $bar->finish();

            foreach $transportmittel ( keys %hashmap){
            print $transportmittel." = ".$hashmap{$transportmittel}."\n"
            }

            # Ergebnis:
            Auto = 4
            Bahn = 3
            Auto = 5
            usw.
            Zuletzt editiert von ronjambo; 07.01.2011, 19:39.

            Comment


            • #8
              Wenn nur deinen Beitrag änderst, merkt kein Mensch, dass der Thread weiter geht

              Weiterhin ist "geht nicht" oder "haut nicht hin" kein Fehler. Fehlerbeschreibung ist erforderlich. Bsp. was für ein Ergebnis wird erwartet, es kommt aber...





              $hashmap{$transportmittel} = $value++;

              Wird wohl so nicht funktionieren.

              Den Value des Key lesen, erhöhen und wieder schreiben. Du hast eine einzige Variable die immer erhöht wird

              $value=$hashmap{$transportmittel} ;
              $value++;
              $hashmap{$transportmittel} =$value;

              oder

              $hashmap{$transportmittel} =$hashmap{$transportmittel} +1;
              Christian

              Comment


              • #9
                Christian, du bist wirklich gut! Danke für den Tip mit der Hashmap. Hat funktioniert. War meine erste hash-Erfahrung!
                Will jmd. einen Tipp von mir? Google ist euer Freund!
                Die Links kann ich mir selber ziehen, und ich weiss schon, wonach ich suchen muss. Was ist, wenn ich es einfach nicht sofort verstehe? Bekomme ich dann einen Link zum Verstehen?
                Bevor ich mich hier Bemühe ist ein Diss seitens Google wahrscheinlich lohnenswerter!
                Die Liebsten sind Link-Poster. Wofür ist entwicklerforum.de da? ref to selfhtml...

                Comment


                • #10
                  ???

                  Deine Reaktion ist unverständlich.

                  Wenn du keine Ahnung von Hashmaps (Hashs) hast ist es legitim, dir einen Link(s) zu senden, in dem das erklärt wird. Es ist nicht die Aufgabe des Forum dir Grundlagenwissen zu vermitteln.

                  Wo habe ich mein Wissen nicht geteilt? Im Gegenteil, da wo du mit "Geht nicht" agierst, habe ich mir den Code angesehen und dir die Fehler aufgezeigt. Die Links hast du offenbar nicht gelesen, sonst wäre die Nachfrage wie das geht wohl nicht gekommen. Auch das habe ich "Wissen geteilt" und dir den doch offensichltichen Lösungsweg genau geschildert

                  Ich erwarte, dass man sich zumindestens selbst um eine Lösung bemüht. Wenig hilfreich sind dann Aussagen wie

                  Haut nicht hin

                  ....

                  # Ergebnis:
                  Auto = 4
                  Bahn = 3
                  Auto = 5
                  usw.

                  Wie soll einer wissen, was rauskommen muss? Keiner kennt dein Projekt, dein Code, deine Vorgehensweise

                  Die Links kann ich mir selber ziehen,
                  Offenbar nicht, sonst wäre die Antwort nicht "
                  Sorry, habe noch nie mit einer Hashmap gearbeitet. Hast du einen kurzen Ansatz? " gewesen

                  und ich weiss schon, wonach ich suchen muss.
                  Hätte wohl auch nicht funktioniert, denn dann hättest du ja von vornherein mit einem Hash gearbeitet und nicht "Sorry, habe noch nie mit einer Hashmap gearbeitet" geschrieben


                  Sorry, habe noch nie mit einer Hashmap gearbeitet. Hast du einen kurzen Ansatz?
                  Wie hätte ich mein Wissen nach deiner Auffassung richtig teilen können. Du hast erst im #7 überhaupt konkreten Code gezeigt. Was für einen Code sollte ich vorher posten? Ein Beispiel was es x-mal im Internet schon gibt. Also habe ich korrekter Weise dir den logischen Weg beschrieben. Wenn du dir die anderen Beiträge hier im Perl-Thread ansiehst, schreibe ich gerne Perl....wenn eine konkrete Frage oder Code vorliegen



                  @ Christian: Ist mir schon klar mit value
                  Offenbar war es nicht so klar (schon nach einer konkreten Erläuterung ), sonst wäre es ja nicht falsch gewesen

                  War meine erste hash-Erfahrung!
                  Hashmaps gibt es in fast jeder Sprache

                  Was ist, wenn ich es einfach nicht sofort verstehe? Bekomme ich dann einen Link zum Verstehen?
                  Ja, waren Links mit Erklärungen der Hashes in Perl dabei.

                  Bevor ich mich hier Bemühe ist ein Diss seitens Google wahrscheinlich lohnenswerter!
                  Eine Eigenschaft des WWW, per Link auf andere Informationen zu verweisen...


                  http://www.tty1.net/smart-questions_de.html
                  Zuletzt editiert von Christian Marquardt; 08.01.2011, 08:55. Reason: Rechtschreibung
                  Christian

                  Comment

                  Working...
                  X