dictionary total sum

Ned Batchelder ned at nedbatchelder.com
Wed Sep 7 20:45:03 EDT 2016


On Wednesday, September 7, 2016 at 8:25:42 PM UTC-4, p... at blacktoli.com wrote:
> Hello,
> 
> any ideas why this does not work?
> 
> >>> def add(key, num):
> ...     a[key] += num
> ...
> >>> a={}
> >>> a["007-12"] = 22 if not a.has_key("007-12") else add("007-12",22)
> >>> a
> {'007-12': 22} # OK here, this is what I want
> >>> a["007-12"] = 22 if not a.has_key("007-12") else add("007-12",22)
> >>> a
> {'007-12': None} # why does this became None?
> 
> Thanks

Your add() function returns None (because it has no return statements).
Your failing statement is assigning that None to a["007-12"].

There are a number of helpful structures in Python to do this work for
you.  collections.Counter will probably be helpful:

    >>> from collections import Counter
    >>> a = Counter()
    >>> a["007-12"] += 22
    >>> a
    Counter({'007-12': 22})
    >>> a["007-12"] += 22
    >>> a
    Counter({'007-12': 44})

--Ned.



More information about the Python-list mailing list