为什么更新字典会从嵌套数组中删除其余的字典?

奥斯汀·约翰逊

我有一个具有播放器结构的json文件

[
  {
    "Player_Name": "Rory McIlroy",
    "Tournament": [
      {
        "Name": "Arnold Palmer Invitational presented by Mastercard",
        "Points": "68.10",
        "Salary": "12200.00"
      },
      {
        "Name": "World Golf Championships-Mexico Championship",
        "Points": "103.30",
        "Salary": "12200.00"
      },
      {
        "Name": "The Genesis Invitational",
        "Points": "88.60",
        "Salary": "12200.00"
      },
      {
        "Name": "Farmers Insurance Open",
        "Points": "107.30",
        "Salary": "12200.00"
      },
      {
        "Name": "World Golf Championships-HSBC Champions",
        "Points": "138.70",
        "Salary": "12400.00"
      },
      {
        "Name": "The ZOZO Championship",
        "Points": "103.40",
        "Salary": "12300.00"
      }
    ]
  }]

当我运行这段代码

import json
import numpy as np
import pandas as pd
from itertools import groupby

# using json open the player objects file and set it equal to data
with open('Active_PGA_Player_Objects.json') as json_file:
    data = json.load(json_file)

with open('Players_DK.json') as json_file:
    Players_DK = json.load(json_file)

results = []

for k,g in groupby(sorted(data, key=lambda x:x['Player_Name']), lambda x:x['Player_Name']): 
    results.append({'Player_Name':k, 'Tournament':[i['Tournament'][0] for i in g]})

for obj in results:
    for x in Players_DK:
        if obj['Player_Name'] == x['Name']:
            obj['Average'] = x['AvgPointsPerGame']

i = 0
points_results = []
while i < len(results):
    j = 0
    while j < len(results[i]['Tournament']):
        difference =  (int(float(results[i]['Tournament'][j]['Points'])) -  (results[i]['Average']))
        points_results.append(round(difference,2))
        j += 1
    i += 1

with open('PGA_Player_Objects_w_Average.json', 'w') as my_file:
    json.dump(results, my_file)

我的清单像这样回来

[{
    "Player_Name": "Rory McIlroy",
    "Tournament": [
      {
        "Name": "Arnold Palmer Invitational presented by Mastercard",
        "Points": "68.10",
        "Salary": "12200.00"
      }
    ],
    "Average": 96.19
  }]

有人可以向我解释为什么更新我的特定词典时,它会从嵌​​套Tournament列表中删除除第一个值以外的所有值吗?我在这里的目标是将每个玩家的平均值添加到其相应的词典中,以便我可以将每个平均值从每个分数中减去。当我尝试执行此操作时,我只能对列表中剩下的一个值执行操作。

假性的

仅仅为了它的价值,我会回过头来真正考虑每条线的实际作用。您还可以通过调用obj或来使事情变得更加艰难x计算平均值可以像这样完成:

for player in data: # data is poorly named, try players or players_data
    player['Average'] = sum(float(tourny['Points']) for tourny in player['Tournament']) / len(player['Tournament'])
    for tourny in player['Tournament']:
        tourny['Difference'] = float(tourny['Points']) - float(player['Average'])

给你留下:

{'Player_Name': 'Rory McIlroy', 
 'Tournament': [{
     'Name': 'Arnold Palmer Invitational presented by Mastercard', 
     'Points': '68.10', 
     'Salary': '12200.00', 
     'Difference': -33.46666666666667},
    {
     'Name': 'World Golf Championships-Mexico Championship', 
     'Points': '103.30', 
     'Salary': '12200.00', 
     'Difference': 1.7333333333333343}, # .....etc 
  'Average': 101.566666666666666
}

当您在代码中使用名称描述它们所代表的内容时,大量的优化立即显而易见。搏一搏!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么更新字典不按相同顺序排序

来自分类Dev

更新字典中的列表

来自分类Dev

更新字典中的值

来自分类Dev

为什么嵌套字典会减慢 numpy 保存速度?

来自分类Dev

swift字典嵌套数组操作-无法更改字典内的嵌套数组

来自分类Dev

swift字典嵌套数组操作-无法更改字典内的嵌套数组

来自分类Dev

过滤字典中的嵌套数据

来自分类Dev

在假定的字典中访问嵌套数据

来自分类Dev

从字典数组中删除

来自分类Dev

更新字典值

来自分类Dev

更新字典Swift

来自分类Dev

更新字典值

来自分类Dev

私下更新字典?

来自分类Dev

在dynamodb中更新字典的费用?

来自分类Dev

如何在Ansible中更新字典

来自分类Dev

更新字典中的某些键

来自分类Dev

在Python中永久更新字典

来自分类Dev

在dynamodb中更新字典的费用?

来自分类Dev

如何更新字典中的键?

来自分类Dev

Ansible:更新字典列表中的值

来自分类Dev

在字典列表中查找并更新字典的值

来自分类Dev

在字典列表中查找和更新字典的值

来自分类Dev

在Algolia中添加/更新/删除嵌套数组

来自分类Dev

在Algolia中添加/更新/删除嵌套数组

来自分类Dev

在字典中的嵌套数组中添加元素,将序列转换为带有嵌套数组的可读字典python

来自分类Dev

为什么对象嵌套数组中的变量不变?

来自分类Dev

更新嵌套字典中的 Set

来自分类Dev

为什么嵌套字典无法正确追加到列表中?

来自分类Dev

如何在嵌套数组中添加新字段