【问题标题】:how to get the items with maximal score in a list如何获取列表中得分最高的项目
【发布时间】:2015-05-06 11:40:52
【问题描述】:

我有这个清单:

lista = [([('autorità', 'S'), ('competente', 'A')], 580.0), ([('legislazione', 'S'), ('nazionale', 'A')], 313.0), ([('età', 'S'), ('minima', 'A')], 130.0), ([('prassi', 'S'), ('nazionale', 'A')], 121.0), ([('autorità', 'S'), ('competenti', 'A')], 116.0), ([('revisione', 'S'), ('totale', 'A')], 112.0), ([('lavoro', 'S'), ('forzato', 'A')], 110.0), ([('cure', 'S'), ('mediche', 'A')], 94.0), ([('paragrafo', 'S'), ('precedente', 'A')], 92.0), ([('proposte', 'S'), ('relative', 'A')], 79.0), ([('formazione', 'S'), ('professionale', 'A')], 76.0), ([('organizzazioni', 'S'), ('rappresentative', 'A')], 76.0), ([('lavoratori', 'S'), ('interessati', 'A')], 74.0), ([('convenzione', 'S'), ('internazionale', 'A')], 71.0)]

对于每个二元词组都分配一个分数,列表中的项目按其分数进行排名。

如何获取列表中具有最大值的前 5 个项目?

【问题讨论】:

  • 与其重新发布,不如取消删除您之前的帖子?内容几乎相同。
  • 您可以编辑问题。

标签: python list python-2.7 python-3.x


【解决方案1】:

您的列表已按降序排序。因此,只需切分列表即可获得前五名:

>>> lista[:5]
    [([('autorit\xc3\xa0', 'S'), ('competente', 'A')], 580.0), ([('legislazione', 'S'), ('nazionale', 'A')], 313.0), ([('et\xc3\xa0', 'S'), ('minima', 'A')], 130.0), ([('prassi', 'S'), ('nazionale', 'A')], 121.0), ([('autorit\xc3\xa0', 'S'), ('competenti', 'A')], 116.0)]

如果你想要他们没有分数:

>>> [x[0] for x in lista[:5]]
[[('autorit\xc3\xa0', 'S'), ('competente', 'A')], [('legislazione', 'S'), ('nazionale', 'A')], [('et\xc3\xa0', 'S'), ('minima', 'A')], [('prassi', 'S'), ('nazionale', 'A')], [('autorit\xc3\xa0', 'S'), ('competenti', 'A')]]

【讨论】:

    【解决方案2】:
    max_ngrams, max_value = ([('autorità', 'S'), ('competente', 'A')], 580.0)
    

    所以

    max_value = 580.0
    

    没有其他二元组得分更高,所以你只得到这个是正常的

    【讨论】:

    • 但是如果我想要列表中的所有最大值?
    • 您的列表似乎在此处按降序排序,因此您的第一个元素是最大值。所以你不会找到任何其他元素。例如,你可以做 max_value * 0.5 这样你就会得到前两个结果
    【解决方案3】:

    我认为您正在寻找这样的东西:

    lista = [([('autorità', 'S'), ('competente', 'A')], 580.0), ([('legislazione', 'S'), ('nazionale', 'A')], 313.0), ([('età', 'S'), ('minima', 'A')], 130.0), ([('prassi', 'S'), ('nazionale', 'A')], 121.0), ([('autorità', 'S'), ('competenti', 'A')], 116.0), ([('revisione', 'S'), ('totale', 'A')], 112.0), ([('lavoro', 'S'), ('forzato', 'A')], 110.0), ([('cure', 'S'), ('mediche', 'A')], 94.0), ([('paragrafo', 'S'), ('precedente', 'A')], 92.0), ([('proposte', 'S'), ('relative', 'A')], 79.0), ([('formazione', 'S'), ('professionale', 'A')], 76.0), ([('organizzazioni', 'S'), ('rappresentative', 'A')], 76.0), ([('lavoratori', 'S'), ('interessati', 'A')], 74.0), ([('convenzione', 'S'), ('internazionale', 'A')], 71.0)]
    
    max_value = 0
    
    count = 0
    
    for index,value in enumerate(lista):
    
        if value[1]> max_value:
    
            max_value = value[1]
    
            count = index
    
    print lista[count]
    

    【讨论】:

    • 它只返回第一个
    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 2018-09-21
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多