包含字典的列表中的for循环

2024-05-20 01:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个程序,可以打印出得分最高的队伍,然后是得分第二高的队伍,然后是第三队伍

WorldCup=[
    {name:"Spain", points:9},
    {name:"Portugal",points:7},
    {name:"Iran",points:6}
]

我的意思是我想把这个列表放到一个forloop中,然后得到这个输出:

Spain
Portugal
Iran

我不确定这在列表中是否可行,但如果你能以任何可能的方式解决它,那也没关系


Tags: name程序列表方式pointsiranspainworldcup
3条回答

您必须按points对数据进行排序,并仅打印其name

worldCup = [{'name':"Spain", 'points':9},{'name':"Portugal",'points':7},{'name':"Iran",'points':6}]
    
for item in sorted(worldCup, key=lambda x:x['points'], reverse=True):
  print(item['name'])

您的列表已按points从高到低排序。列表是有序的,所以在迭代时可以依靠它来维持顺序

因此,您可以在这个for循环中打印您的姓名:

for team in WorldCup:
    print(team['name'])

然而,我假设这只是一种运气,你想要处理任何可能的团队排序。如果是这样,我们可以使用^{}reverse=True按降序对团队进行排序

对于排序key,与其他答案类似,我们可以使用^{}。使用itemgetter而不是lambda通常稍快一些,如本answer所示

from operator import itemgetter

WorldCup = [
    {'name':"Spain", 'points':9},
    {'name':"Portugal",'points':7},
    {'name':"Iran",'points':6}
]

sorted_teams_desc = sorted(WorldCup, key=itemgetter('points'), reverse=True)

for team in sorted_teams_desc:
    print(team['name'])

输出:

Spain
Portugal
Iran

给你:

WorldCup=[
    {'name':"Spain", 'points':9},
    {'name':"Portugal",'points':7},
    {'name':"Iran",'points':6}
]

for team in sorted(WorldCup, key=lambda team: team['points'], reverse=True):
    print(team['name'])

输出:

Spain
Portugal
Iran

相关问题 更多 >