dict slice in python (translating perl to python)
Jon Clements
joncle at googlemail.com
Wed Sep 10 12:20:33 EDT 2008
On 10 Sep, 16:28, hofer <bla... at dungeon.de> wrote:
> Hi,
>
> Let's take following perl code snippet:
>
> %myhash=( one => 1 , two => 2 , three => 3 );
> ($v1,$v2,$v3) = @myhash{qw(one two two)}; # <-- line of interest
> print "$v1\n$v2\n$v2\n";
>
> How do I translate the second line in a similiar compact way to
> python?
>
> Below is what I tried. I'm just interested in something more compact.
>
> mydict={ 'one' : 1 , 'two' : 2 , 'three' : 3 }
> # first idea, but still a little too much to type
> [v1,v2,v3] = [ mydict[k] for k in ['one','two','two']]
>
> # for long lists lazier typing,but more computational intensive
> # as split will probably be performed at runtime and not compilation
> time
> [v1,v2,v3] = [ mydict[k] for k in 'one two two'.split()]
>
> print "%s\n%s\n%s" %(v1,v2,v3)
>
> thanks for any ideas
Another option [note I'm not stating it's preferred, but it would
appear to be closer to some syntax that you'd prefer to use....]
>>> from operator import itemgetter
>>> x = { 'one' : 1, 'two' : 2, 'three' : 3 }
>>> itemgetter('one', 'one', 'two')(x)
(1, 1, 2)
hth
Jon.
More information about the Python-list
mailing list