手头的问题是我有一个列表,我需要迭代并逐一比较。
def stockcheck():
stock = open("Stock.csv", "r")
reader = csv.reader(stock)
stockList = []
for row in reader:
stockList.append(row)
print(stockList)的输出是:
[['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")
这是我能做的尽可能多,但它没有经过迭代...任何想法?提前谢谢!
答案 0 :(得分: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']]
答案 1 :(得分:0)
使用[1:]
无法获取标题,然后进行比较。
for item in stockList[1:]:
if item[1] < item[2]:
print item
print("do the add to CSV jiggle")