[Tutor] Self referencing within a dictionary

Max Noel maxnoel_fr at yahoo.fr
Sat Apr 2 12:38:05 CEST 2005


On Apr 2, 2005, at 12:12, Liam Clarke wrote:

> Hi,
>
> Out of curiosity, is it possible to create a dictionary like this -
>
> foo = {'a':1, 'b':2, 'c':foo['a']}
>
> I know that as above doesn't work, but was just wondering if it's
> possible, and if it's a
> Bad Thing?
>
> Regards,
>
> Liam Clarke

	It doesn't work because the expression {'a':1, 'b':2, 'c':foo['a']} is 
evaluated before the assignment. It has to be, as Python doesn't do 
this kind of lazy evaluation. But when the expression is evaluated, foo 
doesn't exist yet, as the assignment hasn't happened yet. Therefore it 
fails.
	If foo existed before that line, it would work. Witness the following 
example:

 >>> foo = {'a':555, 'b':1}
 >>> foo
{'a': 555, 'b': 1}
 >>> foo = {'a':1, 'b':2, 'c':foo['a']}
 >>> foo
{'a': 1, 'c': 555, 'b': 2}

	You'd have to have a good reason to do that, though.

-- Max
maxnoel_fr at yahoo dot fr -- ICQ #85274019
"Look at you hacker... A pathetic creature of meat and bone, panting 
and sweating as you run through my corridors... How can you challenge a 
perfect, immortal machine?"




More information about the Tutor mailing list