저는 파이썬과 프로그래밍에 대해 매우 익숙합니다. 나는이 사이트에서 많은 유용한 아이템을 발견했지만, 내가 원하는 것을 성취하는 가장 좋은 방법에 관해 혼란스러워했다.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']]
, 나는 세트 등 튜플의 목록을 사용하여 여러 가지를 시도 나의 최근 '시도'그냥 결과를 얻을 수 있는지 확인하기 위해 노력했다-I는 다음과 같이 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는 9999 것이 이상한데도 불구하고'all (a == b, a는 b, z는 (RemoteLA [i] [, Master [j]))'로 대체 될 수 있습니다. – njzk2
그런 까다로운 지표 변수를 수행하십시오. RemoteLA ** 등에서 ll을 사용하는 것이 더 좋습니다. C 스타일의 인덱스 변수를 가질 필요가 없습니다 – tschm
실제로 4 개의 '원격'파일을 비교할 수 있으며 그 중 하나에서 계정 번호가 모두 9로 나열됩니다. 이것은 고정되어 있고, 9999로 나열된 계정 번호는 완료되지 않고 통과하려고합니다. – ceitel