В вашем коде много проблем. Причиной ошибки является то, что вы пытаетесь создать экземпляр словаря с набором из трех элементов в списке, что невозможно. См. the dict do c для деталей.
Тем не менее, я бы предложил переработать весь вложенный l oop.
Сначала вы иметь в clud_ele
список информации об игроке, каждая информация об игроке касается только одного игрока и содержит только одну позицию, только одно имя и только один номер. Поэтому нет необходимости хранить эту информацию в списках, вы можете использовать простые переменные:
for player_info in clud_ele:
number = player_info.select('span.number')[0].get_text(strip=True)
if number == '-':
number = 100
name = player_info.select('h4.name')[0].get_text(strip=True)
position = player_info.select('span.position')[0].get_text(strip=True)
Здесь использование метода select
возвращает список, но, поскольку вы знаете, что список содержит только один элемент, можно заставить этот предмет звонить get_text
. Но вы можете проверить, что длина player_info.select('span.number')
на самом деле равна 1, прежде чем продолжать работать, если хотите быть уверенным ...
Таким образом, вы получите скалярный тип данных, которым будет намного легче манипулировать. Также обратите внимание, что я переименовал i
в player_info
, что гораздо более явно.
Тогда вы можете легко добавить данные вашего игрока в ваш players
dict:
players[team_name].append({'name': name,
'position': position
'number': number})
This предположим, что вы создаете players[team_name]
перед вложенным l oop с помощью players[team_name] = []
.
Редактировать: как указано в ответе @ kederra c , использование defaultdict
- это разумный и удобный способ избежать ручного создания каждого players[team_name]
списка
Наконец, это даст вам:
- словарь содержит значения для
name
, position
и number
ключей для каждого игрока - список команд со словарями игроков для каждой команды
- словарь игроков, связывающий список команд для каждого
team_name
Это структура данных, которую вы, кажется, хотите, но возможны и другие структуры. Не забудьте подумать о своей структуре данных, чтобы сделать ее логичной и легко управляемой.