2015-06-09 3 views
-1

Проблема в том, что у меня есть список списков, которые мне нужны для повторения и сравнения по одному.с использованием цикла for для сравнения списков

def stockcheck(): 
    stock = open("Stock.csv", "r") 
    reader = csv.reader(stock) 
    stockList = [] 
    for row in reader: 
     stockList.append(row) 

Выход из печати (Фондовый) является:

[['Product', 'Current Stock', 'Reorder Level', 'Target Stock'], ['plain blankets', '5', '10', '50'], ['mugs', '15', '20', '120'], ['100m rope', '60', '15', '70'], ['burner', '90', '20', '100'], ['matches', '52', '10', '60'], ['bucket', '85', '15', '100'], ['spade', '60', '10', '65'], ['wood', '100', '10', '200'], ['sleeping bag', '50', '10', '60'], ['chair', '30', '10', '60']] 

Я искал основы для этого, но я не имел никакой удачи ... Я уверен, что решение очень простое, но это ускользает от меня! По сути, мне нужно проверить, меньше ли текущий запас, чем уровень повторного заказа, и если он сохраняет его в CSV (эта часть я не могу без проблем).

for item in stockList: 
    if stockList[1][1] < stockList[1][2]: 
     print("do the add to CSV jiggle") 

Это то, что я могу сделать, но он не перебирает ... Любые идеи? Заранее спасибо!

ответ

3

Итерация через stockList, используя список понимание, может быть, и затем распечатать результаты

[sl for sl in stockList[1:] if sl[1] < sl[2]] 

вы получите следующие результаты:

[['mugs', '15', '20', '120']] 

В случае, если вам интересно stockList[1:] является обеспечение того, вы игнорируете заголовок.

Однако вы должны отметить, что значения представляют собой строки, которые сравниваются. Следовательно, значения сравниваются char по char. Если вам нужны целые сравнения, вы должны преобразовать строки в целые числа, считая, что вы абсолютно уверены, что sl[1] и sl[2] всегда будут целыми числами - просто представляются в виде строк. Просто попробуйте сделать:

[sl for sl in stockList[1:] if int(sl[1]) < int(sl[2])] 

В результате изменения:

[['plain blankets', '5', '10', '50'], ['mugs', '15', '20', '120']] 
+0

'[сл для сл в биржевой бюллетень [1:] если сл [1] <сл [2]] [0]' даст лист – Ajay

+0

очень полезно спасибо! Интересно, почему я только получаю кружки, возвращаясь, когда обычные одеяла также должны (15 - <20 для кружек, а 5 - <10 для одеял)? – MildCorma

+0

Я обновил свой ответ в соответствии с вашим запросом –

0

Используйте [1:], чтобы не получить заголовок, а затем сделать Comparation.

for item in stockList[1:]: 
    if item[1] < item[2]: 
     print item 
     print("do the add to CSV jiggle") 
+0

Спасибо, это великолепно! – MildCorma

+0

'item [1] '10'' – dreyescat

+0

@MildCorma Если ответы были успешными, пожалуйста, примите ответ. благодаря –

Смежные вопросы