How to say $a=$b->{"A"} ||={} in Python?

James Stroud jstroud at mbi.ucla.edu
Fri Aug 17 04:20:04 CEST 2007


beginner wrote:
> On Aug 16, 6:21 pm, James Stroud <jstr... at mbi.ucla.edu> wrote:
>>I'm afraid you've asked a non sequiter:
>>
>>euler 40% cat test.pl
>>
>>$a=$b->{"A"} ||={} ;
>>print "$a\n" ;
>>
>>$b->{"B"} = 0 ;
>>$a=$b->{"B"} ||={} ;
>>print "$a\n" ;
>>
>>$b->{"X"} = 15 ;
>>$a=$b->{"X"} ||={} ;
>>print "$a\n" ;
>>
>>euler 41% perl test.pl
>>HASH(0x92662a0)
>>HASH(0x926609c)
>>15
> 
> It is not supposed to be used this way.
> $b is supposed to be a hash-table of hash-table. If a key exists in
> $b, it points to another hash table. The $a=$b->{"A"} ||={} pattern is
> useful when you want to add records to the double hash table.
> 
> For example, if you have a series of records in the format of (K1, K2,
> V), and you want to add them to the double hash-table, you can do
> $a=$b->{K1} || ={}
> $a->{K2}=V

That's great, but the perl code you provided does not behave identically 
to the python code you provided, so your requirments were not well stated.

(Does my annoyance with perl and its ugly syntax show here?)

James

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/



More information about the Python-list mailing list