You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python根据每个ID的score值对指定JSON数据排序?

按score从高到低排序JSON中Users节点的ID

实现思路

原JSON里的Users是字典结构,直接对字典排序无效,得先取出字典的键值对(用户ID和对应信息),再用sorted()函数根据score字段做降序排序。

完整代码示例

import json

# 目标JSON数据
json_str = '''
{
  "Users": {
    "586393728470745123": {
      "score": 150, 
      "name": "user1"
    }, 
    "437465122378874895": {
      "score": 115, 
      "name": "user2"
    }, 
    "904032786854346795": {
      "score": 65, 
      "name": "user3"
    }, 
    "397930609894490122": {
      "score": 810, 
      "name": "user4"
    }, 
    "384814725164433408": {
      "score": 10, 
      "name": "user5"
    }, 
    "337104925387390977": {
      "score": 1, 
      "name": "user6"
    }, 
    "243452651541495808": {
      "score": 10, 
      "name": "user7"
    }
  }
}
'''

# 解析JSON数据
data = json.loads(json_str)
users_dict = data["Users"]

# 按score降序排序:取出键值对,以每个用户的score为排序依据
sorted_users = sorted(users_dict.items(), key=lambda item: item[1]["score"], reverse=True)

# 方式1:输出排序后的列表(直观查看)
print("排序结果(按score从高到低):")
for user_id, user_info in sorted_users:
    print(f"ID: {user_id} | 姓名: {user_info['name']} | 分数: {user_info['score']}")

# 方式2:转成有序字典并生成新的JSON(保留字典结构)
# Python3.7+ 普通字典默认保留插入顺序,直接转dict即可
sorted_users_dict = dict(sorted_users)
new_json = json.dumps({"Users": sorted_users_dict}, indent=2)
print("\n排序后的JSON:")
print(new_json)

关键说明

  • users_dict.items():把Users字典转成可迭代的键值对集合,每个元素是(用户ID, 用户信息字典)的元组。
  • key=lambda item: item[1]["score"]:指定排序依据为元组第二个元素(用户信息)里的score值。
  • reverse=True:设置为降序排序,默认是升序。
  • 若使用Python3.6及以下版本,需导入from collections import OrderedDict,用OrderedDict(sorted_users)生成有序字典。

内容的提问来源于stack exchange,提问作者PeeblYweeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:01:11