使用高阶函数过滤/排序/减少嵌套字典



我有一个用Python解决的类练习,我不知道如何进行:

get_wins(wsu_games,team(
假设您想找到wsu对给定球队赢得的比赛的分数。编写一个函数get_wins,该函数以WSU游戏数据和球队名称为输入,并返回一个元组列表,其中包括WSU与该球队进行和赢得的每一场比赛的年份和分数。

例如,
get_wins(wsu_games,'UTAH')返回[(2018, (28, 24))](WSU与"UTAH"打了4场比赛,但只赢了2018年的比赛(
get_wins(wsu_games,'STAN')返回[(2018, (41, 38)), (2019, (49, 22)), (2021, (34, 31))](WSU与"STAN"进行了3场比赛,并赢得了全部3场比赛(

数据集:

wsu_games = {
2018: { "WYO":(41,19), "SJSU":(31,0), "EWU":(59,24), "USC":(36,39), "UTAH":(28,24), 
"ORST":(56,37), "ORE":(34,20), "STAN":(41,38), "CAL":(19,13), "COLO":(31,7), 
"ARIZ":(69,28), "WASH":(15,28), "ISU":(28,26)},
2019: { "NMSU":(58,7), "UNCO":(59,17), "HOU":(31,24), "UCLA":(63,67), "UTAH":(13,38), 
"ASU":(34,38), "COLO":(41,10), "ORE":(35,37), "CAL":(20,33), "STAN":(49,22), 
"ORST":(54,53), "WASH":(13,31), "AFA":(21,31) },
2020: { "ORST":(38,28), "ORE":(29,43), "USC":(13,38), "UTAH":(28,45)},
2021: { "USU":(23,26), "PORT ST.":(44,24), "USC":(14,45), "UTAH":(13,24), "CAL":(21,6),
"ORST":(31,24), "STAN":(34,31), "BYU":(19,21), "ASU":(34,21), "ORE":(24,38), 
"ARIZ":(44,18), "WASH":(40,13), "CMU":(21,24)} }

我们不允许使用任何类型的循环来解决此类中的问题。(用循环求解相对容易,高阶函数就不那么容易了(。

我该怎么做?

尝试:

def get_wins(games, team):
return list(
map(
lambda v: (v, games[v][team]),
filter(
lambda k: team in games[k]
and games[k][team][0] > games[k][team][1],
games,
),
)
)

print(get_wins(wsu_games, "STAN"))

打印:

[(2018, (41, 38)), (2019, (49, 22)), (2021, (34, 31))]

最新更新