Домашнее задание - проект для Python Notebook в Уотсоне.Домашнее задание предоставляет следующие коды для функции get_basketball_stats (link = "...").Однако он возвращает ошибочный результат: значение словаря и ключ не совпадают, т. Е. Ключу "PPG" присваиваются значения "GP".
Я попробовал те же коды в Google Colab.Результат верный.Версия Google Colab Python - 3.6.7.Я подозреваю, что устаревшая версия Python в Watson (3.5.5) вызывает ошибочный словарь, и поэтому я задаю вопрос здесь: как обновить версию Python Watson?
def get_basketball_stats(link='https://en.wikipedia.org/wiki/Michael_Jordan'):
# read the webpage
response = requests.get(link)
# create a BeautifulSoup object to parse the HTML
soup = bs4.BeautifulSoup(response.text, 'html.parser')
# the player stats are defined with the attribute CSS class set to 'wikitable sortable';
#therefore we create a tag object "table"
table=soup.find(class_='wikitable sortable')
# заголовки таблицыв первой строке таблицы (tr) мы создаем объект тега с первой строкой
headers = table.tr # имена столбцов таблицы отображаются в виде аббревиатуры;поэтому мы находим все теги abbr и возвращаем к ним итератор title = headers.find_all ("abbr") # создаем словарь и передаем заголовки таблицы в качестве ключей data = {title ['title']: [] для заголовка в заголовках} # мы будем хранить каждый столбец в виде списка в словаре, заголовок столбца будет ключом словаря
#we iterate over each table row by fining each table tag tr and assign it to the objed
for row in table.find_all('tr')[1:]:
#we iterate over each cell in the table, as each cell corresponds to a different column we all obtain the correspondin key corresponding the column n
for key,a in zip(data.keys(),row.find_all("td")[2:]):
# we append each elment and strip any extra HTML contnet
data[key].append(''.join(c for c in a.text if (c.isdigit() or c == ".")))
# we remove extra rows by finding the smallest list
Min=min([len(x) for x in data.values()])
#we convert the elements in the key to floats
for key in data.keys():
data[key]=list(map(lambda x: float(x), data[key][:Min]))
return data
Я ожидаю, что ключи будут соответствовать их соответствующим значениям в Watson, как это делает Google Colad.