Koncept wrote: > #!/usr/bin/perl > > # Parse comma delimited lines and create a final frequency hash > # Real example would read a file line by line > my %dict = {}; > my @lines = ( "1,2,3,4,5", "2,3,4,5", "3,4,5", "4,5", "5" ); > foreach(@lines) { map( $dict{ $_ }++, split( "," ) ); } > foreach( sort byKeys keys %dict ) { > print "Key: $_\tFrequency: ", "*" x $dict{ $_ }, "\n" > if $dict{ $_ } =~ /\d+/g; > } > sub byKeys { $dict{$b} <=> $dict{$a} } > > __DATA__ > Results: > Key: 5 Frequency: ***** > Key: 4 Frequency: **** > Key: 3 Frequency: *** > Key: 2 Frequency: ** > Key: 1 Frequency: *
I don't speak Perl, but based on your output, I'd probably do something like: py> lines = ["1,2,3,4,5", "2,3,4,5", "3,4,5", "4,5", "5"] py> counts = {} py> for items in lines: ... for item in items.split(','): ... counts[item] = counts.get(item, 0) + 1 ... py> for key in sorted(counts, key=counts.__getitem__, reverse=True): ... print 'Key: %s Frequency: %s' % (key, '*'*counts[key]) ... Key: 5 Frequency: ***** Key: 4 Frequency: **** Key: 3 Frequency: *** Key: 2 Frequency: ** Key: 1 Frequency: * I'm probably missing a few subtleties, but hopefully this will get you started. STeVe -- http://mail.python.org/mailman/listinfo/python-list