[英]Sorting JSON response with Python
Need to help to figure out how to sort JSON reponse by highest to lowest number, for example. 例如,需要帮助弄清楚如何按最高到最低编号对JSON响应进行排序。 here is part of JSON reponse below:
这是下面JSON响应的一部分:
{
"queue": "RANKED_SOLO_5x5",
"name": "Riven's Cutthroats",
"entries": [
{
"leaguePoints": 812,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 277,
"playerOrTeamName": "CLG Bunso",
"playerOrTeamId": "19732914",
"wins": 356
},
{
"leaguePoints": 567,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 56,
"playerOrTeamName": "SKT Frost",
"playerOrTeamId": "66401633",
"wins": 160
},
{
"leaguePoints": 751,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": true,
"losses": 421,
"playerOrTeamName": "C9 Hard",
"playerOrTeamId": "47836799",
"wins": 494
},
{
"leaguePoints": 587,
"isFreshBlood": false,
"isHotStreak": true,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 157,
"playerOrTeamName": "ShadowFiendv",
"playerOrTeamId": "71181475",
"wins": 265
},
{
"leaguePoints": 1109,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": true,
"losses": 353,
"playerOrTeamName": "ApoIlo Price",
"playerOrTeamId": "7250",
"wins": 425
},
Now, I already grabbed the necessary info i needed, as below: 现在,我已经获取了所需的必要信息,如下所示:
def getChallengerLadder(region, APIKey):
URL = "https://" + region + ".api.pvp.net/api/lol/" + region + "/v2.5/league/challenger?type=RANKED_SOLO_5x5&api_key=" + APIKey
print (URL)
response = requests.get(URL)
return response.json()
responseJSON3 = getChallengerLadder(region, APIKey)
x = 0
while True:
print (responseJSON3['entries'][x]['leaguePoints'], responseJSON3['entries'][x]['playerOrTeamName'] )
x += 1
As a result i get a list as follows (again, below is only a small sample): 结果,我得到如下列表(再次,下面只是一个小样本):
608 Z Y Xydra
552 Silas Kroeger
1109 ApoIlo Price
601 Blem
587 Boy vs Girl
701 l am Bjerg
560 duo to homecomin
I want to sort this list from largest to smallest number, but i cant figure out how to do it. 我想将此列表从最大到最小排序,但是我不知道该怎么做。 Any help would be appreaciated!
任何帮助将不胜感激! IS there a better way to do it then i already done?
有没有更好的方法可以做到这一点呢? I assume you would have to put the response in the array and sort the array?
我假设您必须将响应放入数组并对数组进行排序? Or is there a better way to do it?
还是有更好的方法呢?
Sorted by leaguePoints
按
leaguePoints
排序
(I use json
module only to create full working example) (我仅使用
json
模块来创建完整的工作示例)
text = '''{
"queue": "RANKED_SOLO_5x5",
"name": "Riven's Cutthroats",
"entries": [
{
"leaguePoints": 812,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 277,
"playerOrTeamName": "CLG Bunso",
"playerOrTeamId": "19732914",
"wins": 356
},
{
"leaguePoints": 567,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 56,
"playerOrTeamName": "SKT Frost",
"playerOrTeamId": "66401633",
"wins": 160
},
{
"leaguePoints": 751,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": true,
"losses": 421,
"playerOrTeamName": "C9 Hard",
"playerOrTeamId": "47836799",
"wins": 494
},
{
"leaguePoints": 587,
"isFreshBlood": false,
"isHotStreak": true,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 157,
"playerOrTeamName": "ShadowFiendv",
"playerOrTeamId": "71181475",
"wins": 265
},
{
"leaguePoints": 1109,
"isFreshBlood": false,
"isHotStreak": false,
"division": "I",
"isInactive": false,
"isVeteran": true,
"losses": 353,
"playerOrTeamName": "ApoIlo Price",
"playerOrTeamId": "7250",
"wins": 425
}
]
}'''
import json
# simulate `getChallengerLadder`
responseJSON3 = json.loads(text)
result = sorted(responseJSON3['entries'], key=lambda x:x['leaguePoints'])
print result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.