繁体   English   中英

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

[英]for loop in a list which contains dictionary

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

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

我的意思是我想把这个列表放到一个forloop并得到这个output:

Spain
Portugal
Iran

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

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

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

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

但是,我假设这只是运气,您想要处理任何可能的团队排序。 如果是这样,我们可以使用sorted()reverse=Truepoints对团队进行降序排序。

对于排序key ,与其他答案类似,我们可以使用operator.itemgetter() 使用itemgetter而不是lambda通常会稍微快一些,如this 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'])

Output:

Spain
Portugal
Iran

这里是 go:

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'])

Output:

Spain
Portugal
Iran

您必须按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'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM