我需要一个条件或if语句,以确保用户输入只能在列表中输入每种类型项目最多5个。例如,我们假设有一个菜单,您可以选择要购买的商品,但您可以同时购买同一类型商品的最高限额为5。 我只能买5个芒果冰沙而不是6个。 但我也可以买5芒果冰沙和1草莓冰沙 我想说的是5不是您可以购买的最大商品数量,而是您可以购买的相同类型商品的最大数量。我需要这个条件来确保用户输入的第6个重复项目不会附加到我的列表中。
#This is what my list should allow
my_list = [["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Strawberry", 2.00]]
#This is what my list shouldn't allow
my_list = [["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Strawberry", 2.00]]
答案 0 :(得分:0)
我同意@Martijn Pieters的评论。 但如果你有任何理由以你的方式做到这一点,这是我的解决方案:
my_list = [["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Strawberry", 2.00]]
product_cache = {}
for obj in my_list:
if obj[0] in product_cache:
product_cache[obj[0]]+=1
if product_cache[obj[0]] > 5:
print( str(obj[0]) + ' over 5')
#do something
else:
product_cache[obj[0]] = 1
和“product_cache”将是dict @Martijn Pieters说的
product_cache = {'Strawberry': 1 , 'Mango': 5}
答案 1 :(得分:0)
您可以使用Counter
计算每件商品的出现次数,并检查每件商品的出现次数是否超过5次:
>>> from collections import Counter
>>> my_list = [["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Mango", 2.00], ["Strawberry", 2.00]]
>>> Counter(item for item,_ in my_list)
Counter({'Mango': 5, 'Strawberry': 1})
>>> Counter(item for item,_ in my_list).values()
dict_values([5, 1])
>>> max(Counter(item for item,_ in my_list).values())
5
>>> max(Counter(item for item,_ in my_list).values()) <= 5
True