Hi All,
I have a file of column data where the first row/line of the file contains the column headings. These I need to use as keys. Furthermore I need to be able to use the first value from each of the data rows/lines as a secondary key. This first column is called LineNumber and the rest of the columns of which there are 400+ I will call data columns. So what I am wanting to do is read the file which is tab-delimited (I can do this alright) and then be able to do things such as select all values from the data columns where LineNumber = xxxxx. I assume I want to use lists but I am unsure how to achieve the above. I have found the following example which seems to partly do this but it only seems to read the first line of my input file. And I can't see how to reference my LineNumbers by their respective value.
### Start of code ###
import UserDict
class SeqDict(UserDict.DictMixin):
"""Dictionary lookalike implemented with lists."""
def __init__(self):
self.keylist = []
self.valuelist = []
def __getitem__(self, key):
try:
i = self.keylist.index(key)
except ValueError:
raise KeyError
return self.valuelist[i]
def __setitem__(self, key, value):
try:
i = self.keylist.index(key)
self.valuelist[i] = value
except ValueError:
self.keylist.append(key)
self.valuelist.append(value)
def __delitem__(self, key):
try:
i = self.keylist.index(key)
except ValueError:
raise KeyError
self.keylist.pop(i)
self.valuelist.pop(i)
def keys(self):
return list(self.keylist)
# Now, read a comma-delimited file into the dictionary
def readfile():
mydict = SeqDict()
# NOTE - enter the path and filename WITHOUT quotes around it.
filename = raw_input('Enter name of file to open: ')
file = open(filename, 'r')
linenum=0
for line in file.readlines():
linenum+=1
mywords = string.split(line, sep='\t')
for word in mywords:
if linenum == 1:
# First row of data: the dictionary keys
mydict.keylist.append(word)
# mydict.valuelist.append([])
else:
# The rest of the data
mydict.valuelist.append(word)
for key, value in mydict.iteritems():
print key, value
if __name__ == '__main__':
readfile()
### End of code ###
Cheers,
Wayne
-- http://mail.python.org/mailman/listinfo/python-list