seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Как правильно применить итераторы для доступа к многомерным массивам?

Добрый день!

Я построил функцию, которая реализовывает многомерный массив:
def LearnMaxLevelDataArray(critery):
    #Программный датасет, состоящий из максимальных значений по уровням знаний и труда в зависимости от доступных критерии.
    if critery == "school":
        da = [
            [
                ['BV6','BX6','BZ6','CB6','CD6','CE6','CG6','CI6'],
                ['BV7','BX7','BZ7','CB7','CD7','CE7','CG7','CI7']
            ],
            [
                ['BW7','BY7','CA7','CC7','CF7','CH7','CJ7'],
                ['BW7','BY7','CA7','CC7','CF7','CH7','CJ7']
            ]
        ]
    elif critery == "high":
        da = [
            [
                ['AF6','AH6','AJ6','AL6','AN6','AO6','AQ6','AS6'],
                ['AF7','AH7','AJ7','AL7','AN7','AO7','AQ7','AS7']
            ],
            [
                ['AG6','AI6','AK6','AM6','AP6','AR6','AT6'],
                ['AG7','AI7','AK7','AM7','AP7','AR7','AT7']
            ]
        ]
    elif critery == "mba":
        da = [
            [
                ['AU6','AW6','AY6','BA6','BC6','BD6','BF6','BH6'],
                ['AU7','AW7','AY7','BA7','BC7','BD7','BF7','BH7']
            ],
            [
                ['AV6','AX6','AZ6','BB6','BE6','BG6','BI6'],
                ['AV7','AX7','AZ7','BB7','BE7','BG7','BI7']
            ]
        ]
    elif critery == "estet":
        da = [
            [
                ['Q6','S6','U6','W6','Y6','Z6','AB6','AD6'],
                ['Q7','S7','U7','W7','Y7','Z7','AB7','AD7']
            ],
            [
                ['R6','T6','V6','X6','AA6','AC6','AE6'],
                ['R7','T7','V7','X7','AA7','AC7','AE7']
            ]
        ]
    elif critery == "degree":
        da = [
            [
                ['B6','D6','F6','H6','J6','K6','M6','O6'],
                ['B7','D7','F7','H7','J7','K7','M7','O7']
            ],
            [
                ['C6','E6','G6','I6','L6','N6','P6'],
                ['C7','E7','G7','I7','L7','N7','P7']
            ]
        ]
    return da

И отрывок кода, где я подключил функцию самого массива:
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']

Когда я учил выборку элементов массива на Python, некоторые специалисты говорили, что для выборок элементов всех видов массивов(включая, многомерные) используется itterows и питоновский компилятор меня удивил:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
 in 
     40         mls_scc = LearnMaxLevelDataArray("school")
     41 
---> 42         for rowm, index in mls_scc.itterows():
     43 
     44             if rowm['gender'] == "M":

AttributeError: 'list' object has no attribute 'itterows'

Я задаю себе вопрос: А как itterows правильно может воспринимать многомерные массивы для выборки данных и какая функция для этого существует?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Может быть,
iterrows
?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы