Dictionary of Dicts question
George Sakkis
george.sakkis at gmail.com
Fri Oct 17 11:57:43 EDT 2008
On Oct 16, 5:05 pm, John Townsend <jtown... at adobe.com> wrote:
> Joe had a good point! Let me describe what problem I'm trying to solve and the list can recommend some suggestions.
>
> I have two text files. Each file contains data like this:
>
> Test file 1234 4567 8975
>
> I want to compare the numbers in each text file. The data set (i.e. the numbers) has a unique identifier: the "test" + the "file". The text files are similar, but may not be exactly the same.
>
> My initial idea was to read the text files and turn each line into a dictionary entry. A dict for each text file. Then walk through the dicts and compare the numbers.
>
> If anyone has a better idea, I'd love to hear it.
If getting the diffs is the only thing you want to do with the data,
your idea is good enough. For more open-ended data manipulation you
should move to a database like in Dennis's reply but for a single
simple task a DB (even sqlite) is probably an overkill.
Here's a quick solution using the dicts approach:
import sys
from operator import sub
def read_data(path):
data = {}
for line in open(path):
fields = line.split('\t')
data[tuple(fields[:2])] = map(float,fields[2:])
return data
d1 = read_data(sys.argv[1])
d2 = read_data(sys.argv[2])
for key in d1:
if key in d2:
diffs = map(sub, d1[key], d2[key])
print key, diffs
HTH,
George
More information about the Python-list
mailing list