【问题标题】:for loop in a list which contains dictionary包含字典的列表中的 for 循环
【发布时间】:2020-10-11 12:04:21
【问题描述】:

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

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

我的意思是我想把这个列表放入forloop 并得到这个输出:

Spain
Portugal
Iran

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

【问题讨论】:

    标签: python list loops dictionary for-loop


    【解决方案1】:

    给你:

    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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        对于key的排序,与其他答案类似,我们可以使用operator.itemgetter()。使用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
        

        【讨论】:

          猜你喜欢
          • 2017-04-05
          • 1970-01-01
          • 2014-05-11
          • 1970-01-01
          • 2022-11-17
          • 1970-01-01
          • 2015-10-30
          • 2018-08-28
          • 1970-01-01
          相关资源
          最近更新 更多