Thanks for that. It resolved the issue and it was so simple compared to everything else I saw on the net.
Only outstanding thing I have to work out is how to execute functions from a dictionary. I will continue searching on the net. Sean On 07/01/2014, at 9:21 PM, Jean-Michel Pichavant <jeanmic...@sequans.com> wrote: > > > ----- Original Message ----- >> Hello all. >> >> I have some questions again. :-) >> >> I wish to be able to place a function within a data structure. I >> would like to use a dictionary because I could pass it a key and >> then the function could be called. I couldn't find anything on the >> net to show me how to do this. More then likely, not using the right >> search terms. >> >> For example: >> >> funct_call = { 'bhp' : 'bhp_counters (addict[key1][key2])', 'ospf' : >> 'ospf_counters (addict[key1][key2])'} >> >> I am sure there is a way to do this. >> >> The other issue is I cannot nest dictionaries. I have seen examples >> and when I apply them to the code below. They do not provide the >> result I want. The program does 3 actions. >> >> >> 1. Opens all the files in the directory. Each file begins with >> "data_". The 6 character in the file name is the occurrence of the >> output. Ranging from 1 to 9. The8th character plus the remaining >> part of the file is the output of the command. For example: >> >> data_1_ospf.txt >> >> The commands stored in this file are related to OSPF. When I build >> the nested dictionary I want to have "OSPF" as the primary key. >> Nested under "OSPF" is the number of times the command has been >> captured. The file content stored as an array and is the value of >> the 2nd key. data structure could look like this: >> >> outputs = { 'ospf' : { '1' : lines_of_file[], '2' : lines of_file[]} >> } >> >> Below is the code I have used to try and achieve the above. I just >> don't get the nested dictionary effect I am after. Again, I am >> trying to use standard core which some of the examples I have seen >> appeared to use. I am aware of collection module. >> >> #! /usr/bin/env python >> >> # Identifying if memory leaks are occurring. >> # goal is to import output to Excel. >> # created on 28 Dec 2013 By Sean Murphy >> >> import os, sys >> from os.path import exists >> >> # main code begins >> >> if len(sys.argv) >= 2: >> # storing file names into variable from command line. >> filenames = sys.argv[1:] >> else: >> filenames = os.listdir(os.getcwd()) >> # print ("Error, must provide at least one file name\n") >> # quit() >> >> outputs = {} # empty dictionary (hash) >> capture = "" # key used for the capture version >> command = "" # key for the command output >> >> for filename in filenames: >> if exists(filename): >> fp = open(filename, "r") >> capture = filename[6] >> command = filename[8:] >> # nested dictionary. Command and then number of captures. >> outputs = {command : { capture :[fp.readlines() } } >> fp.close() >> else: >> print ("error %s doesn't exists\n" % filename) >> quit() >> >> print ("%r\n" % outputs.keys()) >> for key in sorted(outputs): >> print (outputs[key].keys ()) >> >> >> Cheers >> Sean > > outputs keeps track of the last loop only because you're assigning a new dict > on every loop. You need to update the current dict instead. > > try to replace > outputs = {command : { capture :fp.readlines() } } > > with (untested code) > > if command not in outputs: > outputs[command] = {} > outputs[command][capture] = fp.readlines() > > JM > > > -- IMPORTANT NOTICE: > > The contents of this email and any attachments are confidential and may also > be privileged. If you are not the intended recipient, please notify the > sender immediately and do not disclose the contents to any other person, use > it for any purpose, or store or copy the information in any medium. Thank you. -- https://mail.python.org/mailman/listinfo/python-list