Добрый день!
Некоторый функционал Python может быть похож на функционал PHP и JavaScript, если взять к примеру - создание ассоциативных ключей?
Сам пример кода:
#Работа с данными для их анализа
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 = "Жен"
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.itterows():
if rowm['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if rowm['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 mls_hsc.itterows():
if rowm['gender'] == "M":
input_ssc_level = rd[rowm[1][0][index]].value
if rowm['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 mls_mba.itterows():
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 mls_estet.itterows():
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 mls_degree.itterows():
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)
Если вы видите sgl - это переменная, отвечающая за реализацию ассоциативных ключей. В плане массивов Python имеется некая схожесть с массивами в PHP и JS. Но я новичок в Python и столкнулся с этой проблемой от компилятора:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
in
20 gender = "Жен"
21
---> 22 sgl['profile']['gender'] = gender
23 sgl['profile']['education_work'] = {
24 'degree': row['degree_t'],
KeyError: 'profile'
Он требует, чтобы правильно был реализован ключ массива. Следуя по
этому материалу, думал, что хорошо заработает и стало всё по-другому.
Подскажите, как в Python правильно реализовать ассоциативные массивы, чтобы программа могла хорошо заработать?
Заранее вам спасибо!