将对象合并到一个列表中

奥斯汀·约翰逊

我有一个像这样的字典列表:

{
   "Player_Name":"Byeong-Hun An",
   "Tournament":[
      {
         "Name":"Arnold Palmer Invitational presented by Mastercard",
         "Points":"32.80",
         "Salary":"10300.00"
      }
   ]
},
{
   "Player_Name":"Byeong-Hun An",
   "Tournament":[
      {
         "Name":"Different",
         "Points":"18.80",
         "Salary":"10400.00"
      }
   ]
}

我想要这个:

[
   {
      "Player_Name":"Byeong-Hun An",
      "Tournament":[
         {
            "Name":"Arnold Palmer Invitational presented by Mastercard",
            "Points":"32.80",
            "Salary":"10300.00"
         },
         {
            "Name":"Different",
            "Points":"18.80",
            "Salary":"10400.00"
         }
      ]
   }
]

我已经尝试过收藏,但是它并不能完全满足我的需求。我本质上是想让每一个玩家都将所有锦标赛对象组合为一个,以便每个玩家只有一个对象,而不是每个事件都有自己的对象。

这是我的代码

import json
    import numpy as np
    import pandas as pd
    from collections import Counter
    
    # using json open the player objects file and set it equal to data
    with open('PGA_Player_Objects.json') as json_file:
        data = json.load(json_file)
    
    points = []
    players = []
    
    for a in data:
       for b in a['Tournament']:
           points.append(int(float(b['Points'])))
    
    for x in data:
        players.append(x['Player_Name'])
    
    def Average(lst):
        unrounded = sum(lst) / len(lst)
        return round(unrounded,2)
    
    result = Counter()
    for d in data:
        for b in d['Tournament']:
            result[d['Player_Name']] += int(float(b['Points'])) 

我怎样才能做到这一点?

梅尔达德·佩德拉法尔(Mehrdad Pedramfar)

如果您的清单在l

l = [{'Player_Name': 'Byeong-Hun An', 'Tournament': [{'Name': 'Arnold Palmer Invitational presented by Mastercard', 'Points': '32.80', 'Salary': '10300.00'}]},
     {'Player_Name': 'Byeong-Hun An', 'Tournament': [{'Name': 'Different', 'Points': '18.80', 'Salary': '10400.00'}]},]

尝试这个:

from itertools import groupby

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

那么结果将是:

[{'Player_Name': 'Byeong-Hun An',
  'Tournament': [
      {'Name': 'Arnold Palmer Invitational presented by Mastercard',
       'Points': '32.80',
       'Salary': '10300.00'},
      {'Name': 'Different',
       'Points': '18.80', 
       'Salary': '10400.00'}]}]

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将对象类日期合并到一个对象中

使用下划线将对象属性合并到一个数组中

将多个列表合并到流中的一个对象列表?

将全局环境中的R对象合并到一个列表中

如何将对象数组中的某些属性合并到另一个数组中?

使用Linq将嵌套对象合并到一个列表中

将两个时间序列对象(ts)列表合并到一个新的列表中

如何按日期将两个对象列表合并到一个新对象中

将输出合并到一个列表中(不合并列表列表)

如何将多个构面结果合并到具有一个属性的对象列表中

js - 将一个对象合并到一个数组中

在Groovy中将两个列表的内容交替合并到一个列表中

将来自两个JavaScript对象的数据合并到一个新对象中

将多个列表列合并到R中的一个列表列中?

将不同列表中的选定项目合并到一个新列表中

c# - 如何将具有对象的多个列表合并到一个列表中,并在c#中使用列表中元素之一的总和

如何将具有唯一字段的两个不同对象列表合并到一个单独的列表中?

C#-将对象列表合并为一个对象

将对象键合并到类中

将R中的两个列表合并到一个数据框中

是否可以将 2 个查找结果合并到 mongodb 中的一个对象中?

将多个对象合并到一个对象下并在一个命令中添加同级对象

如何从多个表中获取一列以合并到一个列表中?

Java-将多个列表数据合并到一个单独的列列表中

将数组列表合并到一个数组列表中

如何将包含字典的Python列表合并到一个最终列表中

在颤振飞镖中将列表合并到一个列表中

如何将多个对象合并到jQuery / javascript中的一个对象

将两个并行任务的结果合并到一个列表中