首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Json字典中的百分比更改

Json字典中的百分比更改
EN

Stack Overflow用户
提问于 2018-06-01 03:08:14
回答 3查看 203关注 0票数 0

我正在学习python,我想知道如何将升序和降序的值赋给两个不同的变量。

在这种情况下,我将使用两个变量,一个胜率最高,另一个胜率最低,以获得百分比变化:

api列表内容如下:

代码语言:javascript
复制
[
  {
    "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"
    }
  }
]

这是一个非常大的列表,所以我只想要一个特定的团队数量,而不是所有的团队,这样我就可以做我的百分比变化数学

代码语言:javascript
复制
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)

到目前为止,我能做的就是用上面的公式打印出键和值,有人能帮我得到最高获胜到最低获胜的百分比变化吗?

EN

回答 3

Stack Overflow用户

发布于 2018-06-01 03:16:43

给定您的团队范围,您可以使用minmax

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2018-06-01 03:30:50

像这样的东西可能会有帮助:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
CARDINALS 14
BUFFALO 16
COWBOYS 21
DOLPHINS 22
low: 14, high: 22
percent difference: 0.571428571429
票数 0
EN

Stack Overflow用户

发布于 2018-06-01 03:39:10

代码语言:javascript
复制
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)

将会产生结果

代码语言:javascript
复制
('DOLPHINS', 22, '0%')
('COWBOYS', 21, '4%')
('BUFFALO', 16, '27%')
('CARDINALS', 14, '36%')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50631216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档