On 03/19/2013 10:54 PM, Phil wrote:
Thank you for reading this.
>
> I'm working my way through a series of exercises where the author only provides a few solutions.
>
> The reader is asked to modify the histogram example so that it uses the get method thereby eliminating the if and else statements. Histogram2 is my effort.
>
> The resulting dictionary only contains the default value provided by "get" and I cannot see how the value can be incremented without an if statement.
>
> def histogram(s):
> d = dict()
> for c in s:
> if c not in d:
> d[c] = 1
> else:
> d[c] += 1
> return d
>
> def histogram2(s):
> d = dict()
> for c in s:
> d[c]= d.get(c, 0)
>
> return d
>
> h = histogram("brontosaurs")
>
> print h
>
> print
>
> print "histogram2"
>
> h = histogram2("brontosaurs")
>
> print h
>

By the way, you can further simplify it by doing:

def histogram2(s):
    return {c: d.get(c,0)+1 for c in s}


That will work in python 3, in python 2 you need:

    return dict((c: d.get(c,0)+1) for c in s)


--
Lark's Tongue Guide to Python: http://lightbird.net/larks/

Those who can make you believe absurdities can make you commit
atrocities.  Voltaire


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to