Skip to main content
 首页 » 编程设计

python之从重复项 JSON 中获取不同的值

2025年05月04日14落叶无声

我有这个 json 派生的字典:

{ 
    "stats": [ 
        { 
            "name": "Jengas", 
            "time": 166, 
            "uid": "177098244407558145", 
            "id": 1 
        }, 
        { 
            "name": "- k", 
            "time": 20, 
            "uid": "199295228664872961", 
            "id": 2 
        }, 
        { 
            "name": "MAD MARX", 
            "time": "0", 
            "uid": "336539711785009153", 
            "id": 3 
        }, 
        { 
            "name": "loli", 
            "time": 20, 
            "uid": "366299640976375818", 
            "id": 4 
        }, 
        { 
            "name": "Woona", 
            "time": 20, 
            "uid": "246996981178695686", 
            "id": 5 
        } 
    ] 
} 

我想从列表中的每个人那里获取“时间”并将其用于排序。

所以我得到的结果是这样的:

TOP 10: 
Jengas: 166 
Loli: 20 

我的第一个尝试是列出重复项目的不同值。

现在的代码是:

with open('db.json') as json_data: 
    topvjson = json.load(json_data) 
    print(topvjson) 
    d = topvjson['stats'][0]['time'] 
    print(d) 

请您参考如下方法:

提取 stats 列表,使用适当的键对其应用 sort:

from json import loads 
 
data = loads("""{ 
  "stats": [{ 
    "name": "Jengas", 
    "time": 166, 
    "uid": "177098244407558145", 
    "id": 1 
  }, { 
    "name": "- k", 
    "time": 20, 
    "uid": "199295228664872961", 
    "id": 2 
  }, { 
    "name": "MAD MARX", 
    "time": "0", 
    "uid": "336539711785009153", 
    "id": 3 
  }, { 
    "name": "loli", 
    "time": 20, 
    "uid": "366299640976375818", 
    "id": 4 
  }, { 
    "name": "Woona", 
    "time": 20, 
    "uid": "246996981178695686", 
    "id": 5 
  }] 
}""") 
 
stats = data['stats'] 
stats.sort(key = lambda entry: int(entry['time']), reverse=True) 
 
print("TOP 10:") 
for entry in stats[:10]: 
  print("%s: %d" % (entry['name'], int(entry['time'])))      

这打印:

TOP 10: 
Jengas: 166 
- k: 20 
loli: 20 
Woona: 20 
MAD MARX: 0 

请注意,您的time 既不是整数也不是字符串:数据集中同时存在0 和"0"。这就是为什么您需要转换 int(...)。