[Tutor] Dictionary and List Question?

Clay Shirky clay at shirky.com
Wed Nov 12 21:32:29 EST 2003


After seeing how unpythonic my regex-laden string manipulations were (thanks
to Messrs. Kuchling and Speno!), I have two questions about pythonic
handling of a dictionary later transformed into a list.

I'm counting lines in a logfile and making each line a key in a dictionary,
so I can get the unique lines, but increment a counter. Later, I want to put
the lines in the list, in the form

17 /writings/spam.html
19 /writings/eggs.html
...

The first question is about the best way to increment the dictionary every
time I see the same line.

Right now I have

if entry in list:
    list[entry] += 1
else:
    list[entry] = 1

but this seems verbose. Is there a way I can say, in one line "increment the
value of list[entry], even if its the first time you've seen entry"?

Next, I want to loop through the dictionary list, and take each key-value
pair, and turn them into a string of value-key, so that the number is first,
and then the line. Then I want to sort them so that the lines appear in
numerical order.

However, when I do this

for k, v in list.items():
    v = str(v)
    url_line = space.join( (v, k) )
    output.append(url_line)

output.sort()

the sort order of output puts the lines in the 1, 12, 13, 2, 21, 3 order,
which is to say an alpha sort of numeric strings. How do I get output.sort()
to sort in numeric order, even though I had to transform the numerical
values from the dictionary to strings to make them a single element in the
list?

Thanks,

-clay 




More information about the Tutor mailing list