Общий ответ на вопрос - функция update
, которая обновляет один словарь значениями из другого (оставляя другие пары key: value
без изменений).
>>> total = {'apples': 0, 'oranges': 0, 'carrots': 0, 'onions': 0}
>>> total.update({'apples': 1, 'oranges': 2})
>>> total
{'apples': 1, 'oranges': 2, 'carrots': 0, 'onions': 0}
Таким образом, вы можете сделать:
total.update(get_fruits('apples'))
для обновления total
всеми значениями, возвращаемыми get_fruits('apples')
.
Чтобы отфильтровать словарь, вы можете сделать понимание, например:
{k: v for k, v in get_fruits('apples').items() if k in {'apples', 'oranges', 'bananas'}}
Обратите внимание, что ваши функции get_fruits
и get_vegetables
на самом деле не выполняют то, что вы описываете для них; они создают словари с нуля каждый раз, а не модифицируют их, так что вы всегда просто получите ответ, содержащий 1 из того, что вы передали в качестве параметра. Чтобы изменить словарь и увеличить счетчик, вы должны каждый раз передавать один и тот же словарь в качестве аргумента, например:
from collections import defaultdict
from typing import Dict
def add_item(item: str, inventory: Dict[str, int]) -> None:
inventory[item] += 1
fruits: Dict[str, int] = defaultdict(int)
vegetables: Dict[str, int] = defaultdict(int)
add_item('apples', fruits)
add_item('apples', fruits)
add_item('carrots', vegetables)
total: Dict[str, int] = {}
total.update(fruits)
total.update(vegetables)
# total: 2 apples, 1 carrots
et c.