我对Python和编程一般都很陌生。我在这个网站上发现了很多有用的东西,但是我也很困惑自己是否想要完成我所需要的最好的方法。Python比较嵌套列表
简而言之,我有2个csv文件,RemoteLA和Master。每个订单项都包含订单号,姓氏,名字,MI,账号#。我必须从RemoteLA中找到不在主文件中的项目。我主要关心的是匹配/验证Order#first,然后是Account#,然后是名称。有些情况下,我可以有两个相同的订单#但不同的名称和账户号码,只要它在主文件中列出相同即可。最后,如果RemoteLA订单号码位于主文件中,但账号被错误列出,我希望将它打印在不同于主订单号码根本不在主文件中的输出中。以下是我的简化列表。
RemoteLA = [['100', 'JACKSON', 'CHRIS', 'D', '12344'], ['110', 'SMITH', 'JANET', 'L' '1223'], ['120', 'STONE', 'MAX', 'W', '1233']]
Master = [['100', 'JACKSON', 'CHRIS', 'D', '1234'], ['90', 'BARST', 'JOEY', 'D', '1344'], ['80', 'NORDON', 'BEV', 'A', '1122'], ['120', 'STONE', 'MAX', 'W', '1233']]
就像我说的,我已经尝试使用套,元组等的列表很多事情我最后的“尝试”是使用while循环如下,我只是想看看我是否能得到的结果我想,但看来我仍然在做错事。
i=0
while i < len(RemoteLA):
j = 0
while j < len(Master):
if RemoteLA[i][0] == Master[j][0]:
if RemoteLA[i][1] == Master[j][1]:
if RemoteLA[i][2] == Master[j][2]:
print('All match')
elif RemoteLA[i][2] == '9999':
pass
else:
print('Account number does not match')
else:
print('Name does not match')
else:
print('Order number does not match')
j = j + 1
i = i + 1
任何帮助或推动正确的方向将非常感激。对不起,我很抱歉。谢谢。
你的3个ifs可以用'all(a == b代替a,b in zip(RemoteLA [i] [,Master [j]))''虽然9999的东西在Python中是奇怪的 – njzk2
你不需要做这样讨厌的索引变量。在RemoteLA **中更好地使用**,无需拥有这样的C风格索引变量 – tschm
我实际上有4个“远程”文件进行比较,其中一个帐号与所有9个一起列出 - 直到这是固定的,任何帐户号码列为9999我想通过没有做任何事情。 – ceitel