On 12/10/2013 12:03, reubennott...@gmail.com wrote:
On Saturday, October 12, 2013 10:20:24 AM UTC+1, Peter Otten wrote:
reubennott...@gmail.com wrote:



I've been working on a program and have had to halt it due a slight

problem. Here's a basic version of the code:



a = 'filled'

b = 'filled'

c = 'empty'

d = 'empty'

e = 'filled'

f = 'empty'

g = 'filled'



testdict = {a : 'apple' , b : 'banana' , c : 'cake' , d : 'damson' , e :

'eggs' , f : 'fish' , g : 'glue'}



You have duplicate keys here, which becomes obvious when you spell out the

values



testdict = {"filled": "apple", "filled": "banana", ...}



When you do that, the last value ("banana") wins, all others (e. g. "apple")

are dropped.



Now what I want to do, is if a variable is filled, print it out. This

however isn't working how I planned. The following doesn't work.



for fillempt in testdict:

     if fillempt == 'filled':

         print(testdict[fillempt])



All this does though, is print glue, where I'd want it to print:



apple

banana

eggs

glue



Perhaps a dictionary isn't the best way to do this.. I wonder what else I

can do...



A dictionary is spot-on, but you have to use the unique "apple",

"banana",... as keys:



status = {"apple": "filled", "banana": "filled", "cake": "empty"}

for item in status:

...     if status[item] == "filled":

...             print(item)

...

apple

banana



Could it be that you just confused dict keys with dict values?

This fixed it, thank you! I did think a dictionary was right; I never 
considered swapping the keys with the values, though. A simple 'fix, but it 
worked. You've been a great help.


That's good to hear.

Would you please read and digest this https://wiki.python.org/moin/GoogleGroupsPython if you need to post again, a quick glance above will soon tell you why :)

--
Roses are red,
Violets are blue,
Most poems rhyme,
But this one doesn't.

Mark Lawrence

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to