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

beginner zyzhu2000 at gmail.com
Thu Aug 16 20:53:19 EDT 2007


On Aug 16, 6:21 pm, James Stroud <jstr... at mbi.ucla.edu> wrote:
> beginner wrote:
> > Hi All.
>
> > I'd like to do the following in more succint code:
>
> > if k in b:
> >     a=b[k]
> > else:
> >     a={}
> >     b[k]=a
>
> > a['A']=1
>
> > In perl it is just one line: $a=$b->{"A"} ||={}.
>
> 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
>
> James
>
> --
> James Stroud
> UCLA-DOE Institute for Genomics and Proteomics
> Box 951570
> Los Angeles, CA 90095
>
> http://www.jamesstroud.com/


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





More information about the Python-list mailing list