Chris Angelico rosuav at
Wed Aug 12 02:49:05 CEST 2015

On Wed, Aug 12, 2015 at 10:43 AM, Ltc Hotspot <ltc.hotspot at> wrote:
> Python can pull the hour from the 'From ' line by finding the time and then
> splitting the string a second time using a colon, i.e., From
> stephen.marquard at Sat Jan  5 09:14:16 2008
> Finally, accumulated the counts for each hour, print out the counts, sorted
> by hour as shown below:

In that case, you want to sort the entire collection, not a single
key-value pair.

It seems to me you can do this fairly efficiently with collections.Counter.

import collections
with open(raw_input("Enter file name: ")) as f:
    counts = collections.Counter(line.split()[5].rstrip() for line in
f if line.startswith("From "))

counts = counts.items()
for hour, count in counts:
    print hour, count

The most important part is getting items() and then sorting the whole thing.


More information about the Python-list mailing list