Python案例:统计"关门防守"成功几次
"关门防守"通常指格斗/体育比赛中,防守方成功化解对方进攻的次数,下面我用一个格斗比赛数据统计的案例来演示如何用Python统计关门防守成功次数。

场景设定
假设有一场比赛的逐回合事件记录,每次事件包含:回合、时间、动作类型、结果。
# 比赛事件数据(模拟)
events = [
{"round": 1, "time": "0:30", "action": "takedown_attempt", "result": "defended"}, # 防摔成功
{"round": 1, "time": "1:10", "action": "strike", "result": "hit"},
{"round": 1, "time": "2:45", "action": "takedown_attempt", "result": "defended"}, # 防摔成功
{"round": 2, "time": "0:20", "action": "submission_attempt","result": "escaped"}, # 逃脱降服
{"round": 2, "time": "3:00", "action": "takedown_attempt", "result": "taken_down"}, # 被摔倒
{"round": 3, "time": "1:15", "action": "takedown_attempt", "result": "defended"}, # 防摔成功
{"round": 3, "time": "2:30", "action": "submission_attempt","result": "escaped"}, # 逃脱降服
]
# 定义哪些算"关门防守成功"
DEFENSE_SUCCESS = {
"takedown_attempt": "defended", # 防摔成功
"submission_attempt": "escaped", # 逃脱降服
}
def count_successful_defense(events):
"""统计关门防守成功次数,并按回合分组"""
total = 0
by_round = {}
details = []
for e in events:
expected = DEFENSE_SUCCESS.get(e["action"])
if expected and e["result"] == expected:
total += 1
by_round[e["round"]] = by_round.get(e["round"], 0) + 1
details.append(e)
return total, by_round, details
total, by_round, details = count_successful_defense(events)
print(f"关门防守成功总次数:{total}")
print("各回合成功次数:", by_round)
print("详细记录:")
for d in details:
print(f" 第{d['round']}回合 {d['time']} - {d['action']} -> {d['result']}")
输出结果
关门防守成功总次数:5
各回合成功次数: {1: 2, 2: 1, 3: 2}
详细记录:
第1回合 0:30 - takedown_attempt -> defended
第1回合 2:45 - takedown_attempt -> defended
第2回合 0:20 - submission_attempt -> escaped
第3回合 1:15 - takedown_attempt -> defended
第3回合 2:30 - submission_attempt -> escaped
进阶:用 pandas 处理
如果数据量大,推荐用 pandas:
import pandas as pd
df = pd.DataFrame(events)
# 构造"是否防守成功"标记
df["defense_success"] = df.apply(
lambda row: DEFENSE_SUCCESS.get(row["action"]) == row["result"], axis=1
)
total = df["defense_success"].sum()
by_round = df[df["defense_success"]].groupby("round").size()
print("总成功次数:", total)
print("各回合:\n", by_round)
关键点说明
- 定义规则表
DEFENSE_SUCCESS:把"动作→成功结果"的映射抽出来,方便日后扩展(比如加上"clinch_defense": "defended")。 - 先过滤再计数:避免把"进攻成功"误算。
- 分组统计:按回合/时间/对手分组,可以得到更细的分析。
- 可扩展:如果把
action换成你自己的业务字段(防守战术类型"),逻辑完全通用。
如果你说的"关门防守"是足球/篮球里的特定战术(比如足球的"摆大巴"、篮球的"关门"协防),或者有具体的数据字段格式,告诉我,我可以把统计逻辑改成对应的版本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播