Как обьеденить два словаря и подсчитать, сколько каждого ключа?

Нужно объединить два ключа в один и посчитать сумму. Один код не работает, а другой странно работает:

stuff = {'cold coin': 42, 'rupe': 1, 'dagger': 1, 'sword': 1}
dragonLoot = {'cold coin': 3, 'robe': 1, 'sword': 1}
print('Inventory')

def addToInventory(inventory, addedItem):
    for k, v in inventory.items():
        if k == k in addedItem.items():
            allValue = v.inventory + v.addedItem
            print(k + ' ' + str(allValue))
addToInventory(stuff, dragonLoot)

он, к сожалению, не работает...

def addToInventory(inventory, addedItem):
    for k, v in inventory.items():
        if k == k in addedItem:
           total = v + v
            print(k + ' ' + str(total))
        elif k not in inventory:
            print(k + ' ' + str(v))
        else:
            print(k + ' ' + str(v))
addToInventory(stuff, dragonLoot)

Этот выводит не сумму ключей с 2 словарей, а если ключи сходяться, то он сумирует количество с 1 словаря

PS И еще один вопрос: возможно ли обьеденить, если записать например:

dragonLoot = {'cold coin', 'cold coin', 'cold coin', 'robe', 'sword'}

Ответы (2 шт):

Автор решения: CrazyElf

Это очень странная конструкция:

if k == k in addedItem.items():

Вы там скорее всего хотите проверить что-то такое:

if k in addedItem: # короткий вариант для if k in addedItem.keys() в Python3
→ Ссылка
Автор решения: Jack_oS

Для объединения словарей с подсчетом можно воспользоваться методом Counter из collections:

from collections import Counter

Для вашего случая:

stuff = {'cold coin': 42, 'rupe': 1, 'dagger': 1, 'sword': 1}
dragon_loot = {'cold coin': 3, 'robe': 1, 'sword': 1}

new_stuff = Counter(stuff) + Counter(dragon_loot)
print(new_stuff)

В результате получите объект Counter:

Counter({'cold coin': 45, 'sword': 2, 'rupe': 1, 'dagger': 1, 'robe': 1})

который можно перевести снова в словарь:

new_stuff_dict = dict(new_stuff)
print(new_stuff_dict)

код выведет:

{'cold coin': 45, 'rupe': 1, 'dagger': 1, 'sword': 2, 'robe': 1}

ps в функции:

def stuff_count(stuff, loot):
    from collections import Counter

    new_stuff = Counter(stuff) + Counter(loot)
    return dict(new_stuff)
→ Ссылка