2012-11-29T08:46:03 MuffiPunkt 1 und 2 widersprechen sich.
2012-11-29T09:21:08 MuffiNaja, entweder ich sortier die Wörter nach Anzahl oder nach "Ähnlichkeit". Beides gleichzeitig geht nicht.
Guest GastWenn mehrere Wörter gleich oft vorkommen (z.B. "als", "mit" und "wie" kommen alle jeweils fünfmal vor in dem Text) alphabetisch geordnet werden.
Guest Gast1) numerisch sortierte Keys
2) Wörter mit Großbuchstaben stehen direkt über demselben Wort in Kleinbuchstaben
3) Wörter mit derselben Häufigkeit sollen alphabetisch geordnet werden.
Guest GastDie Keys enthalten jeweils ein bestimmtes Wort und die zugeordneten Werte eine Zahl, die die Anzahl ihres jeweiligen Wortes in einem Text anzeigen. Es geht also um eine Häufigkeitsliste.
Nun soll die Funktion mir die Keys so sortieren, dass der häufigste als erstes angezeigt wird und der am wenigsten vorkommende als letztes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/env python # coding: iso-8859-1 h = {"als" : 5, "wie" : 3, "Von" : 3, "zu" : 5, "von" : 10} h2 = {} for i in h.keys(): if not h2.has_key(h[i]): h2[h[i]] = [] h2[h[i]].append(i) print h2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#! /usr/bin/perl use strict; use warnings; my %words = qw( als 5 wie 3 Von 3 zu 5 von 10 ); my %by_number; while ( my ($k,$v) = each %words ) { push @{ $by_number{$v} }, $k; } require Data::Dumper; print Data::Dumper->new( [ \%by_number ], [ qw( *by_number ) ] )->Sortkeys(1)->Dump();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#!/usr/bin/perl use warnings; use strict; my %h = ("als" => 5, "wie" => 3, "Von" => 3, "zu" => 5, "von" => 10); my $i; my $u; my @k = keys(%h); my %h2 = (); foreach $i (@k) { if (! exists($h2{$h{$i}})) { $h2{$h{$i}} = []; } push( @{ $h2{$h{$i}} }, $i); } my @k2 = keys(%h2); @k2 = sort({$b <=> $a} @k2); foreach $i (@k2) { print "$i\t"; foreach $u (@{ $h2{$i} }) { print "$u, "; } print "\n"; }