为什么我的嵌套字典重复一个键?

2024-04-27 18:49:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个嵌套字典,其中包含我从https://www.koodomobile.com/rate-plans?INTCMP=KMNew_NavMenu_Shop_Plans中提取的几个元素。然而,即使我能积极地看到我在抓取准确的数据(当我打印时),它似乎在重复整个目录中的关键值。重复的部分内容是每月成本、数据数量、分钟数和消息

我希望能够正确地将我的字典planPermutation嵌套在另一个字典planDicts中

以下是我的输出示例:

{ 'Bring your own device 30': {'plan type Name': 'Bring your own device', 'monthlyCost': 75, 'dataNum': 10000, 'minutes': 'Unlimited', 'messaging': 'Unlimited'},

'Bring your own device 35': {'plan type Name': 'Bring your own device', 'monthlyCost': 75, 'dataNum': 10000, 'minutes': 'Unlimited', 'messaging': 'Unlimited'},

'Bring your own device 45': {'plan type Name': 'Bring your own device', 'monthlyCost': 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

Tags: yourdeviceuntilmessagingwaitecownplan