Perlish dictionary behavior
Larry Bates
lbates at swamisoft.com
Thu Jun 3 17:08:36 EDT 2004
You can do this with:
thingCounts={}
for thing in file:
thingCounts[thing]=thingCounts.get(thing, 0)+1
Larry Bates
Syscon, Inc.
"Chris" <bit_bucket5 at hotmail.com> wrote in message
news:fa7108b0.0406031202.6ab7cc8d at posting.google.com...
> One nice thing about Perl that is helpful when tallying things up by
> type is that if you increment a hash key and the key does not exist,
> Perl puts a one there. So you can have code that does something like
> this:
>
> my %thingCounts;
> foreach my $thing(<file>)
> {
> $thingCounts{$thing}++;
> }
>
> (I think the syntax is right, but with Perl I never am sure).
>
> In Python, this would generate a KeyError. So you'd do something like
>
> thingCounts = {}
> for thing in file:
> try:
> thingCounts[thing] += 1
> except KeyError:
> thingCounts[thing] = 1
>
> Is there any clever way to be able to just say, like in Perl,
> for thing in file:
> thingCounts[thing] += 1
>
> and have it do the above? Perhaps with a custom dictionary class or
> something? Just wondering what that might look like.
>
> Just curious. Thanks.
> -Chris
More information about the Python-list
mailing list