Почему мой вложенный словарь повторяет ключ? - PullRequest
0 голосов
/ 16 января 2020

Я создаю вложенный словарь с несколькими элементами, которые я извлекаю из https://www.koodomobile.com/rate-plans?INTCMP=KMNew_NavMenu_Shop_Plans. Тем не менее, даже несмотря на то, что я могу активно видеть, что я собираю точные данные (когда я печатаю), кажется, что он повторяет значения ключа, продумывая весь диктат. Некоторые из повторяющихся вещей: ежемесячная стоимость, dataNum, минуты, сообщения.

Я хотел бы иметь возможность правильно вкладывать свой словарь planPermutation в другой словарь planDicts.

вот пример моего вывод:

{'Принесите свое собственное устройство 30': {'Имя типа плана': 'Принесите свое собственное устройство', 'monthCost': 75, 'dataNum': 10000, 'minutes': «Неограниченный», «обмен сообщениями»: «Неограниченный»},

«Принесите свое собственное устройство 35»: {«Имя типа плана»: «Принесите свое собственное устройство», «MonthCost»: 75, «dataNum» : 10000, «минут»: «Неограниченный», «обмен сообщениями»: «Неограниченный»},

«Принесите свое собственное устройство 45»: {«Имя типа плана»: «Принесите свое собственное устройство», «ежемесячная стоимость» ': 75,' dataNum ': 10000,' minutes ':' Unlimited ',' Messaging ':' Unlimited '}, ...}

def planDictsGenerator():
                planPermutation = {}
                index = 1

                # name
                planName = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#block-system-main > div > div > div.view-content > div.rate-plan-block > div.tab-header-wrapper > h2')))
                planName = str(planName[0].text)
                planPermutation["plan type Name"] = planName

                subplans = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.panel-col-first')))
                for plan in subplans:
                    driver.execute_script("arguments[0].scrollIntoView();", plan)
                    driver.execute_script("arguments[0].click();", plan)
                    time.sleep(1)

                    # monthlyCost
                    monthlyCost = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .koodo-currency')))
                    monthlyCost = monthlyCost[0].text
                    monthlyCost = int(monthlyCost.replace('$', ''))
                    planPermutation["monthlyCost"] = monthlyCost

                    # Data
                    dataNum = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-data-mobile-value strong')))
                    dataNum = dataNum[0].text
                    if "GB" in dataNum:
                        dataNum = int(dataNum.replace(' GB', '')) * 1000
                    else:
                        dataNum = int(dataNum.replace(' MB', ''))
                    planPermutation["dataNum"] = dataNum

                    # minutes
                    minutes = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-canada-wide-any-min-mobile strong')))
                    minutes = minutes[0].text
                    if "Unlimited" in minutes:
                        minutes = "Unlimited"
                    else:
                        minutes = int(minutes)

                    planPermutation["minutes"] = minutes

                    # messaging
                    messaging = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-unlim-text-and-pic-mobile strong')))
                    messaging = messaging[0].text
                    if "Unlimited" in messaging:
                        messaging = "Unlimited"
                    else:
                        messaging = int(messaging)

                    planPermutation["messaging"] = messaging

                    dictName = planName + " " + str(monthlyCost)
                    planDicts[dictName] = planPermutation
                    print(planPermutation)


  [1]: https://www.koodomobile.com/rate-plans?INTCMP=KMNew_NavMenu_Shop_Plans
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...