2017-09-25 98 views
-2

我需要一個條件或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]] 
+1

爲什麼要在列表中重複一遍?只需使用一個字典:'basket = {'Mango':5,'Strawberry':1}'。保持價格與此分開。 –

+0

什麼是'2.00'?這是價格還是數量? –

回答

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」將@Martijn皮特斯說

product_cache = {'Strawberry': 1 , 'Mango': 5} 
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