У меня есть список кортежей, который является справочной:
classes = [('400002', 'Class1'), ('400009', 'Class2'), ('400209', 'Class3')]
У меня также есть список кортежей, которые являются записями:
records = [('Record 1','400002','Memo1'),('Record 2','400003','Memo2'),
('Record 3','400009','Memo3'),('Record 4','L-REF-96-1','Memo4'),('Record
5','400002','Memo5')]
Чтобы импортировать, я должен назначить класс и закодировать его:
encoding = 'utf-8'
ref = []
nom = []
memo = []
classr = []
for i in records:
ref.append(i[0].encode(encoding))
nom.append(i[1].encode(encoding))
memo.append(i[2].encode(encoding))
теперь мне нужно назначить класс на основе индекса 2, если он существует, иначе, если str начинается с L-REF, тогда дать ему общий класс, иначе дать ему другой общий класс
Я делал что-то подобное, но это не сработало, оно всегда выполнялось по умолчанию с частью "Else" моего оператора if:
for c in classes:
if i[1] == c[0]:
newclass = c[1]
elif i[1][5:] == "L-REF":
newclass = 'general class1'
else:
newclass = 'general class2'
classr.append(newclass.encode(encoding))
newimportlist = list(zip(ref,nom,memo,classr))
Ожидаемый результат:
[(b'Record 1',b'400002',b'Memo1',b'Class1'),(b'Record
2',b'400003',b'Memo2',b'general class2'), (b'Record
3',b'400009',b'Memo3',b'Class2'),(b'Record 4',b'L-REF-96-
1',b'Memo4',b'general class 1'),(b'Record
5',b'400002',b'Memo5',b'Class1')]