繁体   English   中英

从 Python 中的列表中删除重复项

[英]Removing duplicates from list in Python

我是编程新手,我真的很想从列表中删除一定数量的重复项。

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

例如,如果一个玩家在他的库存中有 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]”让我的商店系统的买方正常工作,但由于某种原因使用相同的代码但从库存中删除,它似乎不起作用。

您可以使用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需要是可散列的才能工作。 如果它们是字符串,它们是可散列的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM