You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现指定球队最高与最低胜场的百分比变化计算求助

解决指定球队胜场排序与百分比变化计算问题

我来帮你搞定这个需求!咱们先调整下现有代码的逻辑,让它更高效地筛选数据、排序,然后完成百分比变化的计算。

步骤1:优化数据筛选与排序

首先,我们可以先筛选出指定球队的数据,再进行排序,这样比先排序整个数据集更高效。同时修正代码里的小问题(比如import语句要分开写,正确导入itemgetter):

import requests
import json
from operator import itemgetter

# 替换成你的API地址
url = 'api url'
response = requests.get(url)
data = json.loads(response.content)

# 指定要处理的球队列表
lookup = ["CARDINALS", "BUFFALO", "DOLPHINS", "COWBOYS"]

# 筛选出目标球队的数据
filtered_teams = [team for team in data if team["team_id"] in lookup]

步骤2:按胜场排序并赋值给变量

接下来,我们对筛选后的球队数据分别按胜场升序和降序排序,赋值给两个变量:

# 按胜场升序排序(从低到高)
sorted_wins_asc = sorted(filtered_teams, key=itemgetter('wins'))
# 按胜场降序排序(从高到低)
sorted_wins_desc = sorted(filtered_teams, key=itemgetter('wins'), reverse=True)

# 如果只需要胜场数值的列表,也可以这样提取
win_values = [team["wins"] for team in filtered_teams]
wins_asc = sorted(win_values)  # 升序胜场列表
wins_desc = sorted(win_values, reverse=True)  # 降序胜场列表

步骤3:计算最高与最低胜场的百分比变化

百分比变化的计算公式是:((最高胜场 - 最低胜场) / 最低胜场) * 100,我们可以从排序后的列表中直接取首尾值来计算:

# 获取最低和最高胜场
min_win = wins_asc[0]
max_win = wins_desc[0]

# 计算百分比变化(处理除数为0的边界情况,避免报错)
if min_win == 0:
    percentage_change = 0.0
    print("最低胜场为0,无法计算百分比变化")
else:
    percentage_change = ((max_win - min_win) / min_win) * 100
    print(f"最高胜场与最低胜场的百分比变化为:{percentage_change:.2f}%")
    print(f"最低胜场球队:{sorted_wins_asc[0]['team_id']}({min_win}场)")
    print(f"最高胜场球队:{sorted_wins_desc[0]['team_id']}({max_win}场)")

完整代码示例

把所有步骤整合起来,完整代码如下:

import requests
import json
from operator import itemgetter

url = 'api url'
response = requests.get(url)
data = json.loads(response.content)

lookup = ["CARDINALS", "BUFFALO", "DOLPHINS", "COWBOYS"]
filtered_teams = [team for team in data if team["team_id"] in lookup]

# 按胜场升序、降序排序
sorted_wins_asc = sorted(filtered_teams, key=itemgetter('wins'))
sorted_wins_desc = sorted(filtered_teams, key=itemgetter('wins'), reverse=True)

# 提取胜场数值列表
win_values = [team["wins"] for team in filtered_teams]
wins_asc = sorted(win_values)
wins_desc = sorted(win_values, reverse=True)

# 计算百分比变化
min_win = wins_asc[0]
max_win = wins_desc[0]

if min_win == 0:
    print("最低胜场为0,无法计算百分比变化")
else:
    percentage_change = ((max_win - min_win) / min_win) * 100
    print("指定球队胜场数据:")
    for team in filtered_teams:
        print(f"{team['team_id']}: {team['wins']}胜")
    print("\n排序结果:")
    print(f"升序:{[t['team_id'] for t in sorted_wins_asc]}")
    print(f"降序:{[t['team_id'] for t in sorted_wins_desc]}")
    print(f"\n最高胜场与最低胜场的百分比变化:{percentage_change:.2f}%")
    print(f"最低胜场:{sorted_wins_asc[0]['team_id']}({min_win}场)")
    print(f"最高胜场:{sorted_wins_desc[0]['team_id']}({max_win}场)")

运行结果(基于你提供的测试数据)

根据你给出的API返回数据,运行后会输出:

指定球队胜场数据:
CARDINALS: 14胜
BUFFALO: 16胜
COWBOYS: 21胜
DOLPHINS: 22胜

排序结果:
升序:['CARDINALS', 'BUFFALO', 'COWBOYS', 'DOLPHINS']
降序:['DOLPHINS', 'COWBOYS', 'BUFFALO', 'CARDINALS']

最高胜场与最低胜场的百分比变化:57.14%
最低胜场:CARDINALS(14场)
最高胜场:DOLPHINS(22场)

内容的提问来源于stack exchange,提问作者Jr David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:54:34