为什么只将一个值写入字典?

时间:2020-05-22 04:08:48

标签: python

from selenium import webdriver
import time
from bs4 import BeautifulSoup
import requests

to_write = {}
link = 'https://www.flashscore.ru/'

def get_shedule_data(link):
    try:
        browser = webdriver.Chrome()
        browser.get(link)
        time.sleep(15)
        root_div = browser.find_element_by_css_selector('.sportName').get_attribute('innerHTML')
        soup = BeautifulSoup(root_div, 'lxml')
        all_events = soup.find_all('div', class_='event__match')
        for event in all_events:
            team1 = event.find('div', class_='event__participant--home').text
            team2 = event.find('div', class_='event__participant--away').text
            to_write['team1'] = team1
            to_write['team2'] = team2
        print(to_write)

    finally:

        browser.quit()

def main():
    get_shedule_data(link)

if __name__ == "__main__":
    main()

{'team1':'МаккабиНетания(Изр)','team2':'БейтарТельАвив(Изр)'}已打印,但我希望将每个team1和team2的值添加到字典中。我这样理解:all_events是一个列表。通过使用for,我们获取all_event的每个元素,从中获取team1,team2的值并将其写入字典。我在哪里错了?

2 个答案:

答案 0 :(得分:0)

在循环时,每次都将新值分配给team1和team2。 因此,每次您覆盖两个键“ team1”和“ team2”。

答案 1 :(得分:0)

因此在词典中,唯一的只能具有一个关联值

例如尝试这些

dict1 = {"a": 1, "a": 2}

在这种情况下,dict1仅包含{"a":2},这是因为当您将新值分配给相同的键时,它将覆盖先前的值。

这就是字典的工作方式

如果您愿意,您肯定可以有一个列表来存储与某个键关联的多个值

dict2 = {"a" : [1,2]}