Python - добавление значений в словарь - PullRequest
0 голосов
/ 07 сентября 2018

Вот мой код:

inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}

def display_inventory(inventory):
    #inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}
    print("Inventory:")
    for key, value in inv.items():
            print value, key
    print("")
    print "Number of items is: ",
    print (sum(inv.values())),

def add_to_inventory(inventory, added_items):
    dragon_loot_dict = dict.fromkeys(added_items, 1)
    #print(dragon_loot_dict)
    inventory=dict(inventory.items()+ dragon_loot_dict.items())
    print(inventory)


dragon_loot = ['gold coin', ' dagger', 'gold coin', 'gold coin', 'ruby']

add_to_inventory(inv, dragon_loot)

Я только начал изучать Python. Когда я добавляю добычу из монстра в свой основной инвентарь, значения из основного инвентаря изменяются на значения из инвентаря монстров.

Как я могу добавить значения тех же предметов, например, gold coin?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете перебирать элементы в dragon_loot_dict и добавлять значения к соответствующим ключам в inventory.Используйте dict.setdefault для инициализации ключа в случае, если такого ключа еще нет в inventory.

Измените:

inventory=dict(inventory.items()+ dragon_loot_dict.items())

на:

for k, v in dragon_loot_dict.items():
     inventory[k] = inventory.setdefault(k, int) + v
0 голосов
/ 07 сентября 2018

Вы можете повторить добычу и увеличить ключ в инвентаре

inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}
dragon_loot = ['gold coin', ' dagger', 'gold coin', 'gold coin', 'ruby']

def add_to_inventory(inventory, items):
    for item in items:
         # get count of item in inventory, or 0 if item is not in inventory
         item_count = inventory.get(item, 0)
         # update item count in inventory
         inventory[item] = item_count + 1
    print(inventory)

add_to_inventory(inv, dragon_loot)

Результат:

#inv = {'rope': 1, 'torch': 6, 'gold coin': 45, 'dagger': 2, 'ruby':1}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...