我有下面的字典
{
"match_1":{
"home_team":2,
"away_team":1
},
"match_2":{
"home_team":1,
"away_team":2
},
"match_3":{
"home_team":1,
"away_team":4}
}我想总结主队和客队的进球,并找出哪支球队在总体上赢了,如果两者的得分是平局的话。我试着转换为tuple,并在lambda中使用max,但是当结果相同时,它失败了。
当前问题的所需输出:winner! away team
如果所有比赛的总目标相同:Draw
发布于 2022-11-01 06:34:56
用这种狡猾的方法
d={
"match_1":{
"home_team":2,
"away_team":1
},
"match_2":{
"home_team":1,
"away_team":2
},
"match_3":{
"home_team":1,
"away_team":4}
}
score = ((i["home_team"], i["away_team"]) for i in d.values())
t1,t2 = map(sum,zip(*score))
[["Away team","Home team"][t1>t2], "Draw"][t1==t2]发布于 2022-11-01 06:31:51
有许多选项可以这样做,其中一种方法是使用reduce函数
import functools
d = {
"match_1": {"home_team": 2, "away_team": 1},
"match_2": {"home_team": 1, "away_team": 2},
"match_3": {"home_team": 1, "away_team": 4},
}
result = functools.reduce(
lambda a, b: {
"home_team": a["home_team"] + b["home_team"],
"away_team": a["away_team"] + b["away_team"],
},
d.values(),
)
if result["home_team"] > result["away_team"]:
print("winner! home_team")
elif result["away_team"] > result["home_team"]:
print("winner! away_team")
else:
print("Draw") 发布于 2022-11-01 06:41:19
我提供了一种处理这个问题的直觉方法。您可以尝试以下代码片段:
match = {
"match_1":{
"home_team":2,
"away_team":1
},
"match_2":{
"home_team":1,
"away_team":2
},
"match_3":{
"home_team":1,
"away_team":4}
}
home_team_score = 0
away_team_score = 0
for m in match:
home_team_score += match[m]['home_team']
away_team_score += match[m]['away_team']
if home_team_score > away_team_score:
print("winner! home team")
elif home_team_score < away_team_score:
print("winner! away team")
else:
print("Draw")https://stackoverflow.com/questions/74272210
复制相似问题