[英]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=True
按points
对团队进行降序排序。
对于排序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.