Dictionaries and loops

bearophileHUGS at lycos.com bearophileHUGS at lycos.com
Mon Sep 8 15:55:52 CEST 2008


Few solutions, not much tested:

data = """{None: ['User-ID', 'Count']}
{None: ['576460847178667334', '1']}
{None: ['576460847178632334', '8']}"""

lines = iter(data.splitlines())
lines.next()

identity_table = "".join(map(chr, xrange(256)))
result = {}
for line in lines:
    parts = line.translate(identity_table, "'[]{},").split()
    key, val = map(int, parts[1:])
    assert key not in result
    result[key] = val
print result

(With Python 3 finally that identity_table can be replaced by None)

# --------------------------------------

import re

patt = re.compile(r"(\d+).+?(\d+)")

lines = iter(data.splitlines())
lines.next()

result = {}
for line in lines:
    key, val = map(int, patt.search(line).groups())
    assert key not in result
    result[key] = val
print result

# --------------------------------------

from itertools import groupby

lines = iter(data.splitlines())
lines.next()

result = {}
for line in lines:
    key, val = (int("".join(g)) for h,g in groupby(line,
key=str.isdigit) if h)
    assert key not in result
    result[key] = val
print result

Bye,
bearophile



More information about the Python-list mailing list