首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从嵌套字典中获取max值,如果相同,则返回两个键

从嵌套字典中获取max值,如果相同,则返回两个键
EN

Stack Overflow用户
提问于 2022-11-01 06:20:39
回答 3查看 63关注 0票数 -1

我有下面的字典

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-01 06:34:56

用这种狡猾的方法

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

Stack Overflow用户

发布于 2022-11-01 06:31:51

有许多选项可以这样做,其中一种方法是使用reduce函数

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

Stack Overflow用户

发布于 2022-11-01 06:41:19

我提供了一种处理这个问题的直觉方法。您可以尝试以下代码片段:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74272210

复制
相关文章

相似问题

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