当键改变并且值是更多的键值对时,是否可以对键值对的JSON对象进行排序。

2024-09-28 05:17:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我很难理解如何将JSON对象(如下所示)输出为字符串,其中棒球的内容是基于“key1”(降序)排序的。当我(从数据源)接收到JSON时,它会让播放器出问题。最终,我的代码需要对播放器进行排序,然后将其传递给下一个排序的函数。请假设我不能修改JSON的格式使其成为/具有数组,因为消费函数不能处理这个问题(正如它当前编写的那样)。你知道吗

JSON示例:

 {
    "DataSource1":{
        "Baseball":{
            "Sean":{
                "key1":"10",
            },
            "Gene":{
               "key1":"100",
            },
            "Alan":{
                "key1":"1",
            }
        }
    },
    "DataSource2":{
        "Baseball":{
            "Bob_Smith":{
                "key1":"1"
            },
            "Adam_Filmore":{
               "key1":"100"
            },
            "Joe_Allen":{
                "key1":"10"
            }
        }
    }
    "DataSource3":{
        "Baseball":{
            "Jake":{
                "key1":"10"
            },
            "Huck":{
                "key1":"1"
            },
            "Eric":{
               "key1":"100"
           }
        }
    }
}

我希望JSON如何输出的示例:

 {
    "DataSource1":{
        "Baseball":{
            "Alan":{
                "key1":"1",
            },
            "Sean":{
                "key1":"10",
            },
            "Gene":{
               "key1":"100",
           }
        }
    },
    "DataSource2":{
        "Baseball":{
            "Bob_Smith":{
                "key1":"1"
            },
            "Joe_Allen":{
                "key1":"10"
            },
            "Adam_Filmore":{
               "key1":"100"
            }
        }
    }
    "DataSource3":{
        "Baseball":{
            "Huck":{
                "key1":"1"
            },
            "Jake":{
                "key1":"10"
            },
            "Eric":{
               "key1":"100"
           }
        }
    }
}

Tags: 函数json示例排序播放器bobsmithkey1
1条回答
网友
1楼 · 发布于 2024-09-28 05:17:53

使用^{}建立所需的排序顺序,然后将结果存储在^{}中。你知道吗

试试这个:

import json
from collections import OrderedDict

with open('data.json') as f:
    data = json.load(f)

for data_source in data:
    data[data_source]["Baseball"] = OrderedDict(
        sorted(data[data_source]["Baseball"].items(),
               key=lambda x: x[1]["key1"]))

with open('new_data.json', 'w') as f:
    json.dump(data, f, indent=4)

相关问题 更多 >

    热门问题