Как использовать списочное понимание в словесном понимании? - PullRequest
0 голосов
/ 01 февраля 2020

Как будет использоваться следующее понимание вложенного списка в нижеприведенном понимании dict для извлечения ключей для dict?

key = [key for element in cont.select('span.number') for key in element['class']] #extracts keys

data = dict((k, v.get_text(strip=True)) for k, v in zip(cont.select('span.number, h4.name, span.position'), cont.select('span.number, h4.name, span.position'))) #creates a dict with three keys and three values 

Цель состоит в том, чтобы извлечь имя класса указанного тега c в качестве ключа и это текст в виде значения.

Working example below:

from bs4 import BeautifulSoup as soup
import requests
from lxml import html
from pprint import pprint
player_page = requests.get('https://www.premierleague.com/clubs/43/Burnley/squad')
cont = soup(player_page.content, 'lxml')
key_number = [key for element in cont.select('span.number') for key in element['class']]
key_name = [key for element in cont.select('h4.name') for key in element['class']]
key_position = [key for element in cont.select('span.position') for key in element['class']]

data = {
        k: v.get_text(strip=True)
        for k,v in zip((number,name,position), cont.select('span.number', 'h4.name', 'span.position')) for (number,name,position) in zip(key_number,key_name,key_position)  
    } 

Ожидаемый результат:

{'Burnley': {'number': 'some_number',
            'name': 'some_name',
            'position': 'some_postion'},
            {'number': 'some_number',
            'name': 'some_name',
            'position': 'some_postion'}
}

РЕДАКТИРОВАТЬ: Я понял некоторые вещи, но не могу понять, почему я получаю сообщение об ошибке name 'number' is not defined?

...