如何按值和键的多个条件对嵌套字典进行排序?
Posted
技术标签:
【中文标题】如何按值和键的多个条件对嵌套字典进行排序?【英文标题】:How can I sort a nested dict by multiple criteria for values and keys? 【发布时间】:2022-01-21 08:44:23 【问题描述】:我在 Python 中有一个嵌套的字典,我想对其进行排序。
在第一步中,我希望它按“点”排序。 如果所有“点”都相等,请使用“wins”。 如果“积分”和“胜利”相等,则应按照“巴西”、“摩洛哥”等球队名称进行排序。
我的字典是
list_of_team =
"Brazil": "wins": 1, "loses": 1, "draws": 1, "goal difference": 0, "points": 4,
"Spain": "wins": 1, "loses": 1, "draws": 1, "goal difference": 0, "points": 4,
"Portugal": "wins": 1, "loses": 1, "draws": 1, "goal difference": 0, "points": 4,
"Morocco": "wins": 1, "loses": 1, "draws": 1, "goal difference": 0, "points": 4
输出应如下所示:
Brazil wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Morocco wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Portugal wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Spain wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
【问题讨论】:
您能否请edit 提供一个更现实的示例,其中点数和获胜的某些值不相等,以便清楚地知道应该如何对输出进行排序。 【参考方案1】:sorted(list_of_team, key= lambda x : list_of_team[x].get("points"))
【讨论】:
它没有回答问题的其余部分,即如果积分相等则按胜利排序,如果积分和胜利都相等则按团队名称排序。【参考方案2】:如果您想按“积分”和“获胜”按降序排序,按球队名称按字典顺序排序:
out = sorted(list_of_team, key= lambda x : (-list_of_team[x].get("points"), -list_of_team[x].get("wins"), x))
【讨论】:
以上是关于如何按值和键的多个条件对嵌套字典进行排序?的主要内容,如果未能解决你的问题,请参考以下文章