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
当我尝试在字典中添加值时,我似乎遇到了一个关键错误,我做错了什么?
答案 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
)。这适用于查找和扩充分配(+=
)
返回一个新的类字典对象。 defaultdict是内置dict类的子类。它会覆盖一个方法并添加一个可写实例变量。其余功能与dict类相同,此处未记录。
第一个参数提供default_factory属性的初始值;它默认为None。所有剩余的参数都被视为传递给dict构造函数,包括关键字参数。