[Tutor] list of dict question

Roelof Wobben rwobben at hotmail.com
Fri Oct 8 13:37:07 CEST 2010




----------------------------------------
> To: tutor at python.org
> From: alan.gauld at btinternet.com
> Date: Fri, 8 Oct 2010 09:02:05 +0100
> Subject: Re: [Tutor] list of dict question
>
>
> "Roelof Wobben" wrote
>
>> I have this programm :
>>
>> tournooi = [{'thuis': 'A','uit': "B",'thuisscore': 20, 'uitscore':
>> 15},{'thuis': 'C','uit': "D",'thuisscore': 80, 'uitscore': 40}]
>> stand = []
>> tussen_thuis = {}
>> tussen_uit = {}
>
> Here you create your dictionary objects.
> You never create any more dictionary objects so these are the only
> ones you have.
>
>> for wedstrijd in tournooi :
>> if wedstrijd['thuis'] in stand :
>> print "True"
>
> stand is a list of dictionaries so this will never be True.
>
>> else :
>> tussen_thuis['ploeg'] = wedstrijd['thuis']
>> tussen_thuis['wedstrijden'] = 1
>> if wedstrijd['thuisscore']> wedstrijd['uitscore']:
>> tussen_thuis['punten'] = 2
>> else:
>> tussen_thuis['punten'] = 0
>>
>> tussen_thuis['voor'] = wedstrijd['thuisscore']
>> tussen_thuis ['tegen'] = wedstrijd['uitscore']
>> stand.append(tussen_thuis)
>
> Here you append the dictionary into stand
>
>> if wedstrijd['uit'] in stand :
>> print "True"
>
> But stand is a list with a dictionary inside so this test
> cannot be true since wedstrijg['uit'] is not a dictionary.
>
>> else :
>> tussen_uit['ploeg'] = wedstrijd['uit']
>> tussen_uit['wedstrijden'] = 1
>> if wedstrijd['thuisscore'] < wedstrijd['uitscore']:
>> tussen_uit['punten'] = 2
>> else:
>> tussen_uit['punten'] = 0
>> tussen_uit['tegen'] = wedstrijd['thuisscore']
>> tussen_uit ['voor'] = wedstrijd['uitscore']
>> stand.append(tussen_uit)
>
> Now you append a second dictionary to stand.
>
> On the next iteration you overwrite those two dictionaries
> with new values then append them to the list again.
> So you wind up with 2 copies of the updated dictionaries.
>
>> So the data of A and B are overwriting by C and D.
>> How can I prevent this ?
>
> You need to create new dictionaries for each iteration of the loop.
> Move the dictionary creation lines inside the loop.
>
> HTH,
>
>
> --
> Alan Gauld
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor

 
Hello Alan, 
 
Thank you.
Now i can work on a script which can check if a team exist in standen.
 
Roelof
  		 	   		  


More information about the Tutor mailing list