您好我有一些json api输出数据,我正在尝试重组/重新格式化。以下是输出示例:
{
"playergamelogs: {
"gamelogs": [
{
"game" : {
"date" : "2016-10-13"
"id" : "32637},
"player": {
"ID": "4419"},
"team" : {
"id" : "16},
"stats" : {
"minutes": "10"}
},
{
"game": {
"date" : "2016-10-17"
"id" : "33737},
"player": {
"ID": "4419"},
"team" : {
"id" : "16
},
"stats" : {
"minutes": "10"
我想要做的是按玩家ID(或名称)对数据进行分组。例如:
`{
"playerlogs" : [
{
"player" : {
"ID" : "4419"
"team" : {
"id" : "16"
},
"gamelogs" : [
{
"game" : {}
"game" : {}
}
}
"player" : {
....
}
}`
我能想到实现这一目标的最好方法是使用dict.items()
和if语句嵌套for循环以匹配相应的玩家ID。我在解决重组方面遇到了麻烦。我是python的新手,非常感谢任何帮助。
答案 0 :(得分:0)
我建议检查MongoDB,而不是将转换逻辑硬编码为python代码。它是一个基于JSON的文档数据库,您可以使用它创建此类查询。
这是一个非常简单的例子: https://docs.mongodb.com/manual/aggregation/
您的数据更复杂,但播放器与示例中的cust_id和游戏相似。
答案 1 :(得分:0)
以下是我能够解决我的初始问题并重新格式化原始数据的方法:
for i in range(0,len(dataedit)):
playerID = dataedit[i]["player"]["ID"]
if not any(p.get('player',{}).get('ID',{}) == playerID for p in playerlog):
playerlog.append({})
playerlog[x]["player"] = dataedit[i]["player"]
x+=1
gameID = dataedit[i]["game"]["id"]
playerlog[x-1]["player"]["game" + gameID] = dataedit[i]["game"]
playerlog[x-1]["player"]["game" + gameID]["stats"] = dataedit[i]["stats"]
playerlog[x-1]["player"]["game" + gameID]["team"] = dataedit[i]["team"]
在我还在学习的过程中,我希望得到关于如何改进的反馈/意见。