Answer the question
In order to leave comments, you need to log in
What is the correct way to nest one loop inside the used one?
Good afternoon!
I am facing one problem from python compiler on object unpacking:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
40 mls_scc = LearnMaxLevelDataArray("school")
41
---> 42 for rowm, index in range(len(mls_scc)):
43
44 if row['gender'] == "M":
TypeError: cannot unpack non-iterable int object
The problem itself is that one cycle is nested inside the used cycle (it concerns the rest of the same cycles) and the compiler cannot match one type of object with another.
i#Работа с данными для их анализа
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 range(len(mls_scc)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if row['gender'] == "F":
input_ssc_level = rd[rowm[0][0][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']
mls_hsc = LearnMaxLevelDataArray("high")
for rowm, index in range(len(mls_hsc)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if row['gender'] == "F":
input_ssc_level = rd[rowm[0][0][index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['hsc_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']['highschool'] = row['hsc_p']
mls_mba = LearnMaxLevelDataArray("mba")
for rowm, index in range(len(mls_mba)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if row['gender'] == "F":
input_ssc_level = rd[rowm[0][0][index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['mba_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']['highschool'] = row['mba_p']
mls_estet = LearnMaxLevelDataArray("estet")
for rowm, index in range(len(mls_estet)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if row['gender'] == "F":
input_ssc_level = rd[rowm[0][0][index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['estet_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']['estet'] = row['estet_p']
mls_degree = LearnMaxLevelDataArray("degree")
for rowm, index in range(len(mls_degree)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if row['gender'] == "F":
input_ssc_level = rd[rowm[0][0][index]].value
maxlevelbalance = 100 - input_ssc_level #Получает баланс уровня от максимального уровня критерии
userlevelbalance = 100 - row['degree_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']['degree'] = row['degree_p']
print(sgl)
Answer the question
In order to leave comments, you need to log in
The in range construct produces one value per cycle,
and you are trying to put this one value into two variables.
For such cases, you came up with enumerate(),
though this will not help you.
for rowm, index in range(len(mls_scc)):
if row['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question