2017-09-25 9 views
-2

ユーザー入力がリスト内の項目のタイプごとに最大5個しか入力できないようにする条件またはif文が必要です。たとえば、購入するアイテムを選択できるメニューがありますが、一度に購入できる同タイプのアイテムの最大数は5です。 私は5つのマンゴースムージーは6つではないと言いましょう。 でも、5マンゴースムージーと1つのストロベリースムージーを買うことができます 私が言っていることは、あなたが購入できるアイテムの最大数ではなく、あなたが購入できる同じタイプのアイテムの最大数。ユーザーの入力による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ピータースは、あなたがにCounterを使用することができます

product_cache = {'Strawberry': 1 , 'Mango': 5} 
0

を言っ辞書になります各アイテムの出現回数を数え、アイテムが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 
関連する問題