How to store the reference of a dictionary element ?
Alfredo P. Ricafort
alpot at mylinuxsite.com
Wed Dec 18 23:29:54 EST 2002
On Wed, 2002-12-18 at 06:36, Bengt Richter wrote:
> I tried to understand "what you are *really* trying do do"(tm) but
couldn't ;-)
> If you would define your requirements independently of preconceived
implementation
> ideas, I suspect people would be able to help better.
>
I'm not exactly sure if you are really replying to this thread. But just
in case you are, and if you curious on what I am trying to do, then here
it is:
I am writing a wxPython program and I am trying to create a class that
is somewhat similar to the menu_item_factory of GTK+. The structure of
the INPUT data to the class is like this:
inputData=( (path,attribute1,attribute2,....),....)
for example:
inputData=(
('/&File', 'text','text'....),
('/File/&New', 'text','text'....),
('/File/New/&Folder', 'text','text'..),
('/File/New/&Directory', 'text','text'..),
('/&Edit', 'text','text'..)
)
When this input is pass on to the class, it will be broken down to a new
structure that the program can easily manipulate. The OUTPUT structure
will be somewhat like this:
outputData={'menuKey':[attribute1,attribute2,{submenu}],..}
In our example above, the outcome will be like this:
outputData={'File':['text','text',
{'New':['text','text',
{'Folder':['text','text',None],
'Directory:['text','text',None]
]
],
'Edit':['text','text',None]
}
But I realized that for this type of structure, where the submenus could
be n level deep, I will have difficulty searching for a particular
element in the dictionary. Instead, I am thinking of changing the
structure to just 1 level like this:
In Python:
----------
(1)
inputData={'parentKey':[attribute1,attribute2,ptrToChild1,ptrToChild2...], 'child1Key':[attribute1,attribute2,ptrToGrandChild1....]
'child2Key':[attribute1,attribute2,None]
'grandchild1Key':[attribute1,attribute2,None]
..}
OR
(2) inputData= {'parentKey':[attribute1,attribute2,None],
'child1Key':[attribute1,attribute2,ptrToParent]
'child2Key':[attribute1,attribute2,ptrToParent]
'grandchildKey':[attribute1,attribute2,ptrToChild1]
..}
(2) In C
--------
struct inputData {
struct inputData *parent;
char * path;
char * attribute1;
char * attribute2;
}
What I was hoping for is to store the reference(not the value) of the
parent or the child. So if I where to use (2) as my structure and say:
parent=inputData['child1Key'][2]
then I would end up with the reference to the 'parentKey' element. At
the same time I can use
inputData.has_key(key)
to search for a particular key.
Hope this clear things up.
AL
More information about the Python-list
mailing list