Стек технологии: Openpyxl
Сама задача заключается в получении списка успешных выпускников с учётом общих максимальных значении из ячеек таблицы Excel.
Я сформировал функцию, позволяющую формировать и иницилизировать многомерные массивы - их значения элементов - коды ячеек. Сам код функции в комментариях к вопросу.
Я сталкиваюсь с проблемой, когда я пытаюсь присвоить список строковых элементов и компилятор приносит сюрпризы по куску кода:
#Работа с данными для их анализа
ds = DatasetRead()
rdata = ReportDataRead()
rwb = ReportDataWorkBook()
rd = rwb.get_sheet_by_name('Report')
#Массивы для проверки соответствии при анализе
mlsb = LearnLevelBalanceArray()
msd = maxSalaryDataArray()
sgl = {}
for index, row in ds.iterrows():
#Производит выборку данных из датасета. Это - первый этап анализа данных по студентам с опытом работы.
#Если решение на русском языке, то расшифровка пола выпускника переводится на английский язык.
if row['gender'] == "M":
gender = "Муж"
if row['gender'] == "F":
gender = "Жен"
if 'profile' not in sgl:
sgl.update({'profile': {}})
if 'info' not in sgl['profile']:
sgl['profile'].update({'info': {}})
if 'degree' not in sgl['profile']['info']:
sgl['profile']['info'].update({'degree': {}})
sgl['profile']['gender'] = gender
sgl['profile']['education_work'] = {
'degree': row['degree_t'],
'specialisation': row['specialisation'],
'salary': row['salary']
}
if row['workex'] == "Yes":
mls_scc = LearnMaxLevelDataArray("school")
for rowm, index in mls_scc:
if row['gender'] == "M":
for rowmt, index in enumerate(rowm[1][0]):
input_ssc_level = rd[rowmt[index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['ssc_p']
if maxlevelbalance > userlevelbalance:
levelbalance = maxlevelbalance - userlevelbalance #Подсчитываем баланс от уровня
if maxlevelbalance < userlevelbalance:
levelbalance = userlevelbalance - maxlevelbalance
for rowms, index in mlsb.iterrows():
if levelbalance == rowms[index] or levelbalance > rowms[index]:
#Если текущий баланс уровня соответствует нужным критериям, то система для списка успешных выпускников оставит уровень школьных знании, которого добился выпускник
sgl['profile']['info']['school'] = row['ssc_p']
ind += 1
if row['gender'] == "F":
for rowmt, index in enumerate(rowm[0][0]):
input_ssc_level = rd[rowmt[index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['ssc_p']
if maxlevelbalance > userlevelbalance:
levelbalance = maxlevelbalance - userlevelbalance #Подсчитываем баланс от уровня
if maxlevelbalance < userlevelbalance:
levelbalance = userlevelbalance - maxlevelbalance
for rowms, index in mlsb.iterrows():
if levelbalance == rowms[index] or levelbalance > rowms[index]:
#Если текущий баланс уровня соответствует нужным критериям, то система для списка успешных выпускников оставит уровень школьных знании, которого добился выпускник
sgl['profile']['info']['school'] = row['ssc_p']
print(sgl)
И по
rd[rowmt[index]].value
компилятор вывел вот такое сообщение:
TypeError: 'int' object is not subscriptable
Сообщение означает, что вместо списков элементов присвоил переменную элементам.
Не раз сталкиваюсь с такими проблемами(особенно в PHP) и подскажите мне, как в Python правильно присвоить список многомерных строковых элементов, чтобы компилятор не приносил сюрпризов?