[Tutor] Dictionaries and multiple keys/values
Alan Gauld
alan.gauld at btinternet.com
Tue Mar 26 11:41:16 CET 2013
On 26/03/13 04:36, Robert Sjoblom wrote:
> Georgie Porgie
> 87%
> $$$
> Canadian, Pub Food
>
So a 5 line pattern with 4 data fields. The last one containing multiple
comma separated values, potentially.
> The three dictionaries are:
> name_to_rating = {}
> price_to_names = {'$': [], '$$': [], '$$$': [], '$$$$': []}
> cuisine_to_names = {}
And the keys are all basic single data values
So far so good.
> Now I've poked at this for a while now, and one idea I had, which I
> worked on for quite a while, was that since the restaurants all start
> at index 0, 5, 10 and so on, I could structure a while loop like this:
Sounds way too complicated.
I'd just read the file in groups of 5 lines and process them as I went.
I'd also write a helper function to process each record.
In pseudo code
def storeRestaurant(mdr):
name = mdr.readline()
rating = mdr.readline()
price = mdr.readline()
cuisines= mdr.readline().split(',')
# now assign values to dictionaries.
with open....as mdr
while True:
try: storeRestaurant(mdr)
except end of file: pass
> I'm sorry, this sounds terribly confused, I know. I had another idea
> to feed each line to a function, because no restaurant name has a
> comma in it, and food offered always has a comma in it if the
> restaurant offers more than one kind. But again, this seems really
> brittle.
I'm not sure why you think its brittle?
You need to code in error checking somewhere,
it might as well be hidden in a function.
> I guess we can't use objects (for some reason),
Technically you can but maybe assignment wise you can't...
> really convoluted expression? And how do I add more than one value to
> a key in a dictionary, if the values are added at different times and
> there's no list created in the dictionary to begin with?
You can create a list to begin with if you suspect you may need multiple
values.... ie each time you add a new key create a list.
The get() method should help here.
> (I briefly though about initializing empty lists for each food type in
> the dictionary and go with my horrible expressions,
You can do the empty lists without the horrible expressions!
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list