我正在学习python,我想知道如何将升序和降序的值赋给两个不同的变量。
在这种情况下,我将使用两个变量,一个胜率最高,另一个胜率最低,以获得百分比变化:
api列表内容如下:
[
{
"team_id": "FALCONS",
"time_data": "2018-05-06T15:25:36.9524691Z",
"wins": 11,
"crow_size": 19563,
"last_game": {
"time_data": "2018-05-06T15:17:16.0000000Z",
"data": "4e7a-bf0c-a97e5f32f58b",
"take_side": "NA"
}
},
{
"team_id": "CARDINALS",
"time_data": "2018-05-06T15:25:36.9212380Z",
"wins": 14,
"crow_size": 26000,
"last_game": {
"time_data": "2018-05-06T15:25:25.6850000Z",
"data": "42ec-8326-445a22ea460f",
"take_side": "NA"
}
},
{
"team_id": "BUFFALO",
"time_data": "2018-05-06T15:25:36.7961978Z",
"wins": 16,
"crow_size": 34200,
"last_game": {
"time_data": "2018-05-06T15:07:50.0000000Z",
"data": "44b7-86c1-6b969fccbe2e",
"take_side": "NA"
}
},
{
"team_id": "COWBOYS",
"time_data": "2018-05-06T15:25:36.9524691Z",
"wins": 21,
"crow_size": 15563,
"last_game": {
"time_data": "2018-05-06T15:17:16.0000000Z",
"data": "4e7a-bf0c-a97e5f32f58b",
"take_side": "NA"
}
},
{
"team_id": "DETROIT-LIONS",
"time_data": "2018-05-06T15:25:36.9212380Z",
"wins": 17,
"crow_size": 23000,
"last_game": {
"time_data": "2018-05-06T15:25:25.6850000Z",
"data": "42ec-8326-445a22ea460f",
"take_side": "NA"
}
},
{
"team_id": "DOLPHINS",
"time_data": "2018-05-06T15:25:36.7961978Z",
"wins": 22,
"crow_size": 24200,
"last_game": {
"time_data": "2018-05-06T15:07:50.0000000Z",
"data": "44b7-86c1-6b969fccbe2e",
"take_side": "NA"
}
}
]
这是一个非常大的列表,所以我只想要一个特定的团队数量,而不是所有的团队,这样我就可以做我的百分比变化数学
import requests
import json
import time
import datetime
import heapq
from pprint import pprint
from operator import itemgetter
url = 'api url'
data = requests.get(url)
data = json.loads(data.content)
data.sort(key=operator.itemgetter('wins'), reverse=True)
lookup = ["CARDINALS", "BUFFALO", "DOLPHINS", "COWBOYS"]
for item in data:
teamname = item["team_id"]
winstreak = item["wins"]
for ex in lookup:
if ex == teamname:
print(teamname, winstreak)
到目前为止,我能做的就是用上面的公式打印出键和值,有人能帮我得到最高获胜到最低获胜的百分比变化吗?
发布于 2018-06-01 03:16:43
给定您的团队范围,您可以使用min
和max
import json
lookup = ["CARDINALS", "BUFFALO", "DOLPHINS", "COWBOYS"]
url = 'api url'
data = requests.get(url)
team_data = json.loads(data.content)
new_teams = [i for i in team_data if i['team_id'] in lookup]
min_win = min(new_teams, key=lambda x:x['wins'])['wins']
max_win = max(new_teams, key=lambda x:x['wins'])['wins']
change_win = (max_win-min_win)/float(min_win+max_win)
发布于 2018-06-01 03:30:50
像这样的东西可能会有帮助:
lookup = ["CARDINALS", "BUFFALO", "DOLPHINS", "COWBOYS"]
wins = {} # dictionary for team wins
for item in data:
teamname = item["team_id"]
winstreak = item["wins"]
for ex in lookup:
if ex == teamname:
wins.update({teamname: winstreak}) # add team wins to dictionary
print(teamname, winstreak)
low = min(wins.values()) # minimum of team wins
high = max(wins.values()) # maximum of team wins
print('low: {}, high: {}'.format(low, high))
print('percent difference: {}'.format(float(high-low)/low)) # print the percentage
输出:
CARDINALS 14
BUFFALO 16
COWBOYS 21
DOLPHINS 22
low: 14, high: 22
percent difference: 0.571428571429
发布于 2018-06-01 03:39:10
from __future__ import division # for python 2
hWin = None
for item in data:
teamname = item["team_id"]
winstreak = item["wins"]
if teamname in lookup:
if not hWin:
hWin = winstreak
percentChange = (hWin - winstreak) / hWin * 100
print(teamname, winstreak, '%i%%' % percentChange)
将会产生结果
('DOLPHINS', 22, '0%')
('COWBOYS', 21, '4%')
('BUFFALO', 16, '27%')
('CARDINALS', 14, '36%')
https://stackoverflow.com/questions/50631216
复制相似问题