在字典中添加值?

时间:2014-03-07 19:46:25

标签: python dictionary

def get_quantities(orders):
    """  (dict of {str: list of str}) -> dict of {str: int}

    >>> get_quantities({'t1': ['Vegetarian stew', 'Poutine', 'Vegetarian stew'], 
                        't3': ['Steak pie', 'Poutine', 'Vegetarian stew'], 
                        't4': ['Steak pie', 'Steak pie']})
    {'Vegetarian stew': 3, 'Poutine': 2, 'Steak pie': 3}    
    """
    food_quantity = {}
    total = 0

    for table in orders:
        for food in orders[table]:
            food_quantity[food] += 1

    return food_quantity

当我尝试在字典中添加值时,我似乎遇到了一个关键错误,我做错了什么?

1 个答案:

答案 0 :(得分:2)

food_quantity[food]尚未添加1。如果它不存在,您可能想要将1添加到0,但Python并不认为。

defaultdict救援!

>>> from collections import defaultdict
>>> food_quantity = defaultdict(int)
>>> food_quantity[food] += 1
>>> food_quantity[food]
1

defaultdict(int)代替0创建一个新的int(值KeyError)。这适用于查找和扩充分配(+=

来自documentation

  

返回一个新的类字典对象。 defaultdict是内置dict类的子类。它会覆盖一个方法并添加一个可写实例变量。其余功能与dict类相同,此处未记录。

     

第一个参数提供default_factory属性的初始值;它默认为None。所有剩余的参数都被视为传递给dict构造函数,包括关键字参数。