Answer the question
In order to leave comments, you need to log in
Why can't you create associative keys like in Javascript and PHP?
Good afternoon!
Some Python functionality can be similar to PHP and JavaScript functionality, for example - creating associative keys?
The example code itself:
#Работа с данными для их анализа
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)
---------------------------------------------------------------------------
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'
Answer the question
In order to leave comments, you need to log in
Python "on the fly" is not able to create keys of dictionaries (ass. arrays).
This will not work if the sql dictionary does not have all nested keys.
For everything to work, make sure that the keys are present in the dictionary. If they are not, then initiate them.
sgl['profile']['info']['degree'] = row['degree_p']
if 'profile' not in sql:
sql.update({'profile': {}})
if 'info' not in sql['profile']:
sql['profile'].update({'info': {}})
if 'degree' not in sql['profile']['info']:
sql['profile']['info'].update({'degree': {}})
sgl['profile']['info']['degree'] = row['degree_p']
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question