Title: Column data with first value from each row as key?

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

Reply via email to