Re: Sortieren von Summe von Hashwertliste - geht das in einem Ritt ? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Samstag, 2.Juli.2005, 13:49.
    Re: Sortieren von Summe von Hashwertliste - geht das in einem Ritt ?

      nee, leider nicht, weil da ja auch Fließkommazahlen anstatt der Ganzzahlen drin stehen können. Die zwei Werte der Liste brauch ich auch noch für weitere Ausgaben.
      Ausserdem brauch ich den kompletten Hash dann sortiert, um die (in diesem falle) Ortsnamen sortiert nach ihrer Summe von (in diesem Falle) Punktwerten für zwei (oder mehr) Kriterien, die jeweils Einzelpunkte erhalten, ausgeben kann, aber gleichzeitig noch Zugriff auf die Einzelwerte habe.
      Da die Punktwerte arithmetisch nach einer bestimmten, nichtlinearen Rechenvorschrift auf Grundlage von in der DB gespeicherten Werten - hier installierte Fläche und Einwohnerzahl, einer Teilmenge von Datensätzen mit Schlüsselwert "Ort" (beliebig viele Datensätze) und in Abhängigkeit von "Art" (definierte Menge, gibt die Anzahl der Elemente des Value-Arrays zum Hash-Key "Ort" vor)- errechnet und dann dynamisch im Hash gespeichert werden, ist das eben "nicht ganz trivial".
      Wie gesagt, mit Einzelwerten klappt das ja, mit einem zusätzlichen Hash, der als Values die Summen der Einzelwerte des Ursprungshash bekommt, funzt das auch. Aber da die Hashs u.U. mehrere MByte gross werden können muss bzw. wollte ich den Zwischenhash sparen.
      Lieschen-Müller Rechnung: Ortsname als Key mit durchschn. 20 Zeichen (Byte) sowie zwei Fließkommazahlen (jede 16 Byte?), macht pro Hash-Wert 52 Byte, rechnen mer mal noch 8 Byte Verwaltungsinfos hinzu sind das 60 Byte pro Wert, bei 30000 Datensätzen/Elementen dann so um die 1,8 MByte.
      Und dann zwei Hashs diese Größe sowie noch ein paar weitere Listen/Hashs mit ähnlicher Größe, da schlägt dann die Prozessbegrenzung zu und es geht nix mehr - oder sind meine Vorstellungen hier falsch?
      Na - hoffe, dass vielleicht doch jemand ne Idee hat...


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Samstag, 2.Juli.2005, 12:47.
    Sortieren von Summe von Hashwertliste - geht das in einem Ritt ?

      Grosses Problem, wo ich seit einiger Zeit nicht weiterkomme:
      Möchte gern einen Hash nach der Summe der zu jedem Schlüssel gehörigen Wertliste sortieren.
      Mit einfachen Werten geht das ja absolut, aber mit Arrays als Wert und dann ner Summenbildung bekomm ich es irgendwie nicht hin.
      Beispiel:
      $h_ort{Berlin} = 100;
      $h_ort{Dresden} = 80;
      $h_ort{Frankfurt} = 110;
      
      Sortieren nach Werten:
      foreach my $ort(sort{$h_ort{$a}<=>$h_ort{$b}}keys %h_ort){
      out "$ort: $h_ort{$ort}<br>";
      }
      
      Wie aber, wenn der Hash so aussieht:
      $h_ort{Berlin} = [40,60];
      $h_ort{Dresden} = [40,40];
      $h_ort{Frankfurt} = [50,60];
      
      und es soll nach der Summe der Listenwerte sortiert werden?
      Mit nem Zwischenhash wollte ich eigentlich nicht arbeiten, irgendwann wird der Speicher voll - der besagte Hash kann u.U. schon mal gut und gerne ein paar tausend Key/Wertpaare enthalten...
      Danke für Tipp, steh im Moment etwas aufm Schlauch deshalb....

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 2.Juli.2005, 13:14.
    Re: Sortieren von Summe von Hashwertliste - geht das in einem Ritt ?

      Hallo Ruben,

      bin da jetzt nicht der große Crack, aber kannst Du die Werte nicht einfach als eine "Zahl" interpretieren?

      40,60
      40,40
      50,60

      würde dann sortiert so ausgegeben

      40,40
      40,60
      50,60 usw

      Vielleicht sehe ich das aber auch nicht ganz richtig;-))

      Gruß

      Claus

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 2.Juli.2005, 13:49.
    Re: Sortieren von Summe von Hashwertliste - geht das in einem Ritt ?

      nee, leider nicht, weil da ja auch Fließkommazahlen anstatt der Ganzzahlen drin stehen können. Die zwei Werte der Liste brauch ich auch noch für weitere Ausgaben.
      Ausserdem brauch ich den kompletten Hash dann sortiert, um die (in diesem falle) Ortsnamen sortiert nach ihrer Summe von (in diesem Falle) Punktwerten für zwei (oder mehr) Kriterien, die jeweils Einzelpunkte erhalten, ausgeben kann, aber gleichzeitig noch Zugriff auf die Einzelwerte habe.
      Da die Punktwerte arithmetisch nach einer bestimmten, nichtlinearen Rechenvorschrift auf Grundlage von in der DB gespeicherten Werten - hier installierte Fläche und Einwohnerzahl, einer Teilmenge von Datensätzen mit Schlüsselwert "Ort" (beliebig viele Datensätze) und in Abhängigkeit von "Art" (definierte Menge, gibt die Anzahl der Elemente des Value-Arrays zum Hash-Key "Ort" vor)- errechnet und dann dynamisch im Hash gespeichert werden, ist das eben "nicht ganz trivial".
      Wie gesagt, mit Einzelwerten klappt das ja, mit einem zusätzlichen Hash, der als Values die Summen der Einzelwerte des Ursprungshash bekommt, funzt das auch. Aber da die Hashs u.U. mehrere MByte gross werden können muss bzw. wollte ich den Zwischenhash sparen.
      Lieschen-Müller Rechnung: Ortsname als Key mit durchschn. 20 Zeichen (Byte) sowie zwei Fließkommazahlen (jede 16 Byte?), macht pro Hash-Wert 52 Byte, rechnen mer mal noch 8 Byte Verwaltungsinfos hinzu sind das 60 Byte pro Wert, bei 30000 Datensätzen/Elementen dann so um die 1,8 MByte.
      Und dann zwei Hashs diese Größe sowie noch ein paar weitere Listen/Hashs mit ähnlicher Größe, da schlägt dann die Prozessbegrenzung zu und es geht nix mehr - oder sind meine Vorstellungen hier falsch?
      Na - hoffe, dass vielleicht doch jemand ne Idee hat...

     Antworten


     
 Liste der Einträge von 23551 bis 23701:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.05s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!