用Python排序JSON响应
例如,需要帮助找出如何按从高到低的数字对JSON响应进行排序。下面是JSON响应的一部分:用Python排序JSON响应,python,json,sorting,Python,Json,Sorting,例如,需要帮助找出如何按从高到低的数字对JSON响应进行排序。下面是JSON响应的一部分: { "queue": "RANKED_SOLO_5x5", "name": "Riven's Cutthroats", "entries": [ { "leaguePoints": 812, "isFreshBlood": false, "isHotStreak": false, "division": "I", "isInactive": false
{
"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
},
现在,我已经获取了所需的必要信息,如下所示:
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
因此,我得到如下列表(同样,下面只是一个小样本):
我想把这个列表从大到小排序,但我不知道怎么做。任何帮助都会得到报答!有没有比我已经做的更好的方法?我假设您必须将响应放入数组并对数组进行排序?或者有更好的方法吗?按联盟积分排序 (我使用
json
模块仅创建完整的工作示例)
按联盟积分排序 (我使用
json
模块仅创建完整的工作示例)
嘿,谢谢你的回答。在您的示例中,您将“text”设置为JSON响应的变量。如果我手头没有文本,我该怎么做?基本上,只有当我从API提示JSON时,文本才可用,并且它可以每隔几分钟更改一次。例如,我不能这样做:
text=''
print(responseJSON3)
''''
,因为responseJSON3被视为引号内的字符串?抱歉,如果这看起来很简单,我只是学习PythonI使用json.loads(text)
来模拟API并获得类似于responseJSON3
的结果来创建工作示例。在回答中,我将变量j
更改为responseJSON3
。print
在屏幕上发送文本,您无法将其分配给变量。您可以使用text=str(一些对象)
,但要获得正确的JSON文本,最好使用text=JSON.dumps(responseJSON3)
。(但在我的示例中,您不必将resonseJSON3
转换为文本)谢谢,我上个星期已经弄明白了,忘了再次查看您的响应,我使用了sorted()方法,将其分配给变量,然后打印了我需要的两个条目(leaguePoints和playerOrTeamName)嘿,谢谢您的回答。在您的示例中,您将“text”设置为JSON响应的变量。如果我手头没有文本,我该怎么做?基本上,只有当我从API提示JSON时,文本才可用,并且它可以每隔几分钟更改一次。例如,我不能这样做:text=''
print(responseJSON3)
''''
,因为responseJSON3被视为引号内的字符串?抱歉,如果这看起来很简单,我只是学习PythonI使用json.loads(text)
来模拟API并获得类似于responseJSON3
的结果来创建工作示例。在回答中,我将变量j
更改为responseJSON3
。print
在屏幕上发送文本,您无法将其分配给变量。您可以使用text=str(一些对象)
,但要获得正确的JSON文本,最好使用text=JSON.dumps(responseJSON3)
。(但在我的示例中,您不必将resonseJSON3
转换为文本)谢谢,我上个星期已经弄明白了,忘了再次查看您的响应,我使用了sorted()方法,将其分配给变量,然后打印了我需要的两个条目(leaguePoints和playerOrTeamName)
608 Z Y Xydra
552 Silas Kroeger
1109 ApoIlo Price
601 Blem
587 Boy vs Girl
701 l am Bjerg
560 duo to homecomin
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