Удаление дубликатов из списка в Python - PullRequest
0 голосов
/ 22 апреля 2020

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

Я делаю текстовую игру и пытаюсь настроить магазин, где можно продавать предметы.

Если у игрока, например, 3 меча в инвентаре, и он хочет продать 2 из них, оставив 1 из них в инвентаре, я не уверен, как это сделать. реализовать это в моем коде.

Пример кода:

опция относится к предмету, который они продают, например, «меч». valitems - это словарь различных предметов в игре.

option4 = input('Enter selling quantity: ')
if option4 <= PlayerIG.inventory.count(option):
                    PlayerIG.inventory -= option4 * [option]
                    PlayerIG.gold += valitems[option]['SPrice']

Я знаю, что это не работает, однако использование "PlayerIG.inventory + = option4 * [option]" получило мою покупательскую сторону системы магазина работать должным образом, но по какой-то причине, используя тот же код, но для удаления из инвентаря, он не работает.

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете сделать это, используя метод list.remove. Он удаляет первый экземпляр передаваемого вами значения, поэтому вам придется делать это option4 количество раз.

if option4 <= PlayerIG.inventory.count(
    # delete `option` from inventory `option4` number of times
    [PlayerIG.inventory.remove(option) for i in range(option4)]
    gold += valitems[option]['SPrice']

Вы можете использовать defaultdict из модуля collections для управления вашим инвентарь.

from collections import defaultdict

# create a default dict with 0 as the default value
inventory = defaultdict(int)

Вы можете добавлять или удалять предметы из инвентаря следующим образом:

# add
inventory[item] += number_of_items
# remove
number_of_items = input('Enter selling quantity: ')
item = input('Enter item to sell: ')

if number_of_items <= inventory[item]:
    inventory[item] -= number_of_items

Имейте в виду, что option и item должны быть хешируемыми чтобы это работало. Если они являются строками, они могут быть хэшируемыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...