Help with Dictionaries and Classes requested please.
Neil Cerutti
horpner at yahoo.com
Thu Aug 9 08:42:26 EDT 2007
On 2007-08-09, special_dragonfly <Dominic at PLEASEASK.co.uk> wrote:
> Is there anyway for python to consider the values within a
> string when entering the data into a dictionary. I know that
> isn't very clear so here's an example:
>
> class MyClass(object):
> def __init__(self,name="",age=""):
> self.name=name
> self.age=age
>
> data="Gary,50"
> d={0:[MyClass(data)]}
> data="Adam,25"
> d[0].append(MyClass(data))
>
> The data is coming from a text file working on a line by line
> basis. I've just tried and I'm just getting the full string in
> the first field. That seems logical, now I don't want it to
> though!
That's what happens if you use 0 for the key every time. ;)
If you're trying to map between ages and lists of names, then
you'll want a little helper function to manage the lists for you.
multidict_add(mdict, key, value):
if key in mdict:
mdict[key].append(value)
else:
mdict[key] = [value]
d = {}
multidict_add(d, 50, "Gary")
multidict_add(d, 50, "Guido")
multidict_add(d, 25, "Adam")
Now you'll get a list of names for every age.
>>> d[50]
["Gary", "Guido"]
You can use the same function to build a mapping from names to
lists of ages.
d = {}
multidict_add(d, "Gary", 50)
multidict_add(d, "Gary", 23)
multidict_add(d, "Adam", 25)
>>> d["Gary"]
[50, 23]
--
Neil Cerutti
The choir invites any member of the congregation who enjoys sinning to join
the choir. --Church Bulletin Blooper
More information about the Python-list
mailing list