【问题标题】:Removing duplicates from list in Python在 Python 中从列表中删除重复项
【发布时间】:2020-08-04 23:35:13
【问题描述】:

我是编程新手,我一直在尝试从列表中删除一定数量的重复项。

我正在制作基于文本的游戏,并且正在尝试建立一个可以出售物品的商店。

例如,如果一个玩家在他的库存中有 3 把剑,并且想要出售其中的 2 把,并在他的库存中保留其中 1 把,我不知道如何在我的代码中实现这一点。

示例代码:

option 指的是他们出售的物品,例如“剑”。 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]”让我的商店系统的购买方正常工作,但出于某种原因使用相同的代码但从库存,它似乎不起作用。

【问题讨论】:

    标签: python list python-2.7 dictionary


    【解决方案1】:

    您可以使用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']
    

    您可以使用collections 模块中的defaultdict 来管理您的库存。

    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
    

    请记住,optionitem 需要是可散列的才能使其工作。如果它们是字符串,则它们是可散列的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 2013-08-03
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      相关资源
      最近更新 更多