【问题标题】:Appending a list with a dictionary key that contains multiple values from a json response使用包含来自 json 响应的多个值的字典键附加列表
【发布时间】:2022-12-03 07:45:29
【问题描述】:

我正在遍历一个 json 响应,其中统计数据按玩过的游戏分组。我想从集合中收集所有值并为它们分配一个字典键。目前每个值都有自己的键。这是 json 响应的示例:

{'data': [{'ast': 9,
           'blk': 0,
           'dreb': 4,
           'fg3_pct': 0.0,
           'fg3a': 2,
           'fg3m': 0,
           'fg_pct': 0.6,
           'fga': 20,
           'fgm': 12,
           'ft_pct': 0.333,
           'fta': 3,
           'ftm': 1,
           'game': {'date': '2003-10-29T00:00:00.000Z',
                    'home_team_id': 26,
                    'home_team_score': 106,
                    'id': 15946,
                    'period': 4,
                    'postseason': False,
                    'season': 2003,
                    'status': 'Final',
                    'time': ' ',
                    'visitor_team_id': 6,
                    'visitor_team_score': 92},
           'id': 361330,
           'min': '42:50',
           'oreb': 2,
           'pf': 3,
           'player': {'first_name': 'LeBron',
                      'height_feet': 6,
                      'height_inches': 8,
                      'id': 237,
                      'last_name': 'James',
                      'position': 'F',
                      'team_id': 14,
                      'weight_pounds': 250},
           'pts': 25,
           'reb': 6,
           'stl': 4,
           'team': {'abbreviation': 'CLE',
                    'city': 'Cleveland',
                    'conference': 'East',
                    'division': 'Central',
                    'full_name': 'Cleveland Cavaliers',
                    'id': 6,
                    'name': 'Cavaliers'},
           'turnover': 2},
          {'ast': 8,
           'blk': 0,
           'dreb': 10,
           'fg3_pct': 0.2,
           'fg3a': 5,
           'fg3m': 1,
           'fg_pct': 0.471,
           'fga': 17,
           'fgm': 8,
           'ft_pct': 0.571,
           'fta': 7,
           'ftm': 4,
           'game': {'date': '2003-10-30T00:00:00.000Z',
                    'home_team_id': 24,
                    'home_team_score': 95,
                    'id': 16277,
                    'period': 4,
                    'postseason': False,
                    'season': 2003,
                    'status': 'Final',
                    'time': ' ',
                    'visitor_team_id': 6,
                    'visitor_team_score': 86},
           'id': 361523,
           'min': '40:21',
           'oreb': 2,
           'pf': 1,
           'player': {'first_name': 'LeBron',
                      'height_feet': 6,
                      'height_inches': 8,
                      'id': 237,
                      'last_name': 'James',
                      'position': 'F',
                      'team_id': 14,
                      'weight_pounds': 250},
           'pts': 21,
           'reb': 12,
           'stl': 1,
           'team': {'abbreviation': 'CLE',
                    'city': 'Cleveland',
                    'conference': 'East',
                    'division': 'Central',
                    'full_name': 'Cleveland Cavaliers',
                    'id': 6,
                    'name': 'Cavaliers'},
           'turnover': 7},

这是我的代码:


    players_stats=[]
    players_game_stats_url="https://balldontlie.io/api/v1/stats?season[]=2018&player_ids[]=237"
    result=requests.get(players_game_stats_url).json()

    for assists in result['data']:
        players_stats.append({"Assists per game":assists['ast']})

我想生产的是这样的:

{场均助攻数:9,8,6,7,3}

但我得到的是:

[{'Assists per game': 9},
 {'Assists per game': 8},
 {'Assists per game': 6},
 {'Assists per game': 7},
 {'Assists per game': 3},
 {'Assists per game': 9},
 {'Assists per game': 4},
 {'Assists per game': 7},
 {'Assists per game': 3},
 {'Assists per game': 8},
 {'Assists per game': 8},
 {'Assists per game': 8},
 {'Assists per game': 2},
 {'Assists per game': 4},
 {'Assists per game': 9},
 {'Assists per game': 7},
 {'Assists per game': 7},
 {'Assists per game': 5},
 {'Assists per game': 8},
 {'Assists per game': 5},
 {'Assists per game': 3},
 {'Assists per game': 9},
 {'Assists per game': 4},
 {'Assists per game': 6},
 {'Assists per game': 3}]

【问题讨论】:

  • 如果您想获得唯一值,请将它们放在一个集合中,然后再格式化输出。这将得到您指定的结果,尽管您指定的结果不是“每场比赛的助攻数”。
  • 使用 assists = [game['ast'] for game in results['data']] 获取数据,然后进行数学运算或其他操作,然后格式化输出以供显示
  • @KennyOstrom 所以只是从响应中创建一个单独的集合,然后将其插入字典?

标签: python json python-3.x list dictionary


【解决方案1】:

基于 Kenny Ostrom 的评论

    output = {"Assists per game": [game_info['ast'] for game_info in result['data']]}

结果会像你问的那样

    {'Assists per game': [9, 8]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多