Using dictionary key as a regular expression class

Arnaud Delobelle arnodel at googlemail.com
Fri Jan 22 17:07:13 EST 2010


Chris Jones <cjns1989 at gmail.com> writes:

> I was writing a script that counts occurrences of characters in source
> code files:
>
> #!/usr/bin/python
> import codecs
> tcounters = {}
> f = codecs.open('/home/gavron/git/screen/src/screen.c', 'r', "utf-8")
> for uline in f:
>   lline = []
>   for char in uline[:-1]:
>     lline += [char]
>   counters = {}
>   for i in set(lline):
>     counters[i] = lline.count(i)
>   for c in counters.keys():
>     if c in tcounters:
>       tcounters[c] += counters[c]
>     else:
>       tcounters.update({c: counters[c]})
>   counters = {}
> for c in tcounters.keys():
>   print c, '\t', tcounters[c]
>
> I was looking for a way to stat by finger actions on a US keyboard for a
> traditional typist, and I was thinking I could use another dictionary
> with keys that would be made up of the characters correponding to each
> finger, such as '!1QqAaZz' for the left pinky, etc., hoping I would be
> able to iterate the keys and match the currently processed character
> with the key and increment it.
>
> Is this something that makes sense, or should I look elsewhere?
>
> Suggestions to improve the above snippet are also welcome.
>
> Thanks,
>
> CJ

Why not just start with (untested):

import codecs
from collections import defaultdict

tcounters = defaultdict(int)
f = codecs.open('/home/gavron/git/screen/src/screen.c', 'r', "utf-8")

for c in f.read():
    tcounters[c] += 1

for c, n in tcounters.iteritems():
    print "%r\t%i" % (c, n)

-- 
Arnaud



More information about the Python-list mailing list