Python 如何将词典附加到词典中?

Python 如何将词典附加到词典中?,python,dictionary,Python,Dictionary,我正试图循环浏览一份玩家列表,将他们的统计数据作为字典。但我没能把格式弄对,弄得乱七八糟 我缺少什么来获得我想要的输出: { Player1: {stat1: 1, stat2: 2, etc,etc} Player2: {stat1: 1, stat2: 2, etc,etc} Player3: {stat1: 1, stat2: 2, etc,etc} } import request from bs4 import BeautifulSoup as soup from pprint i

我正试图循环浏览一份玩家列表,将他们的统计数据作为字典。但我没能把格式弄对,弄得乱七八糟

我缺少什么来获得我想要的输出:

{ 
Player1: {stat1: 1, stat2: 2, etc,etc}
Player2: {stat1: 1, stat2: 2, etc,etc}
Player3: {stat1: 1, stat2: 2, etc,etc}
}

import request
from bs4 import BeautifulSoup as soup
from pprint import pprint

player_name = ['Bernd Leno', 
 'Emiliano Martínez', 
 'Matt Macey', 
 'Héctor Bellerín']

for i in player_name:
    player_page = requests.get('https://www.premierleague.com/players/10483/{}/stats'.format(i))
    cont = soup(player_page.content, 'lxml')

    data = dict((k.contents[0].strip(), v.get_text(strip=True)) for k, v in zip(cont.select('.topStat span.stat, .normalStat span.stat'), cont.select('.topStat span.stat > span, .normalStat span.stat > span')))  
    player = {cont.select_one('.playerDetails .name').get_text(strip=True): data}

pprint(player)

将循环前的播放器声明为:

player = {}
然后在循环中执行以下操作:

player[playerName] = data
我已修改了您的代码以去除依赖项,并演示了您正在寻找的解决方案:

player_name = ['Bernd Leno', 'Emiliano Martnez', 'Matt Macey', 'Hctor Bellern']
player = {}
for i in player_name:
    #player_page = requests.get('https://www.premierleague.com/players/10483/{}/stats'.format(i))
    #cont = soup(player_page.content, 'lxml')
    data = {"stat1": 1, "stat2": 2}  
    player[i] = data

print(player)
以及输出:

{'Hctor Bellern': {'stat2': 2, 'stat1': 1}, 
'Matt Macey': {'stat2': 2, 'stat1': 1}, 
'Bernd Leno': {'stat2': 2, 'stat1': 1}, 
'Emiliano Martnez': {'stat2': 2, 'stat1': 1}}

主要问题是,每个玩家都有不同的URL,因此为了正确地获取统计数据,有必要找出玩家id:

import requests
from bs4 import BeautifulSoup as soup
from pprint import pprint

players_url = [
'https://www.premierleague.com/players/4985/Bernd-Leno/stats',
'https://www.premierleague.com/players/4245/Emiliano-Mart%C3%ADnez/stats',
'https://www.premierleague.com/players/10422/Matt-Macey/stats',
'https://www.premierleague.com/players/4474/H%C3%A9ctor-Beller%C3%ADn/stats']

# this is dict where we store all information:
players = {}

for url in players_url:
    player_page = requests.get(url)
    cont = soup(player_page.content, 'lxml')
    data = dict((k.contents[0].strip(), v.get_text(strip=True)) for k, v in zip(cont.select('.topStat span.stat, .normalStat span.stat'), cont.select('.topStat span.stat > span, .normalStat span.stat > span')))
    players[cont.select_one('.playerDetails .name').get_text(strip=True)] = data

pprint(players)
印刷品:

{'Bernd Leno': {'Accurate long balls': '161',
                'Appearances': '34',
                'Assists': '0',
                'Catches': '7',
                'Clean sheets': '7',
                'Errors leading to goal': '5',
                'Fouls': '0',
                'Goal Kicks': '248',
                'Goals': '0',
                'Goals conceded': '43',
                'High Claims': '12',
                'Losses': '8',
                'Own goals': '0',
                'Passes': '971',
                'Passes per match': '28.56',
                'Penalties saved': '0',
                'Punches': '18',
                'Red cards': '0',
                'Saves': '110',
                'Sweeper clearances': '14',
                'Throw outs': '203',
                'Wins': '19',
                'Yellow cards': '0'},
 'Emiliano Martínez': {'Accurate long balls': '28',
                       'Appearances': '6',
                       'Assists': '0',
                       'Catches': '2',
                       'Clean sheets': '3',
                       'Errors leading to goal': '0',
                       'Fouls': '1',
                       'Goal Kicks': '39',
                       'Goals': '0',
                       'Goals conceded': '7',
                       'High Claims': '13',
                       'Losses': '3',
                       'Own goals': '0',
                       'Passes': '124',
                       'Passes per match': '20.67',
                       'Penalties saved': '0',
                       'Punches': '1',
                       'Red cards': '0',
                       'Saves': '9',
                       'Sweeper clearances': '2',
                       'Throw outs': '30',
                       'Wins': '3',
                       'Yellow cards': '0'},

...etc.

列表、玩家姓名,或者您是指其他内容吗?谢谢,我错过了跳过最后一行,只参考玩家=数据。如果您只做
player=data
,那么您将替换先前玩家的数据,最终只获得一个玩家的数据。相反,您应该这样做(如答案所示):
player[playerName]=data
确切地说,这是演示的@5个元素!嗨,Andrej,我解决了url问题,将所有玩家的名字提取到一个列表中,然后使用.format(player_name),这是因为通用url。我遇到的问题是,措辞的格式是正确的。感谢您提供的解决方案!保留玩家id是个好主意,因为玩家的名字不一定是唯一的。