【问题标题】:How to find greatest item from list in Python如何从 Python 列表中找到最大的项目
【发布时间】:2022-12-23 09:38:34
【问题描述】:

我有以下代码:

lst = ['2022-12-08 21:53:28.230556_54_12748.png', '2022-12-08 21:53:28.314088_86_14029.png', '2022-12-08 21:53:28.363581_72_12540.png', '2022-12-08 21:53:28.448268_65_13491.png', '2022-12-08 21:53:28.907252_50_7001.png', '2022-12-08 21:53:28.998206_55_13458.png', '2022-12-08 21:53:29.066905_60_8857.png', '2022-12-08 21:53:29.167242_54_8327.png', '2022-12-08 21:53:29.260880_52_11163.png', '2022-12-08 21:53:29.318770_52_7859.png', '2022-12-08 21:53:29.992619_51_7173.png', '2022-12-08 21:53:30.380722_55_7301.png', '2022-12-08 21:53:31.546448_59_7005.png', '2022-12-08 21:53:31.820877_53_6044.png', '2022-12-08 21:53:31.901512_51_5818.png', '2022-12-08 21:53:35.622028_56_7221.png', '2022-12-08 21:53:35.706456_72_7522.png', '2022-12-08 21:53:36.785644_53_8222.png', '2022-12-08 21:53:36.872902_60_10873.png', '2022-12-08 21:53:36.952308_59_10217.png', '2022-12-08 21:53:37.034774_57_7258.png', '2022-12-08 21:53:37.151830_52_7745.png', '2022-12-08 21:53:37.236664_80_13584.png', '2022-12-08 21:53:37.401254_70_13281.png', '2022-12-08 21:53:37.485339_91_16176.png', '2022-12-08 21:53:37.564524_74_13113.png', '2022-12-08 21:53:37.652097_90_13526.png', '2022-12-08 21:53:37.729431_82_13303.png', '2022-12-08 21:53:37.777823_66_12084.png', '2022-12-08 21:53:37.857692_72_14855.png', '2022-12-08 21:53:37.939566_72_16755.png', '2022-12-08 21:53:38.017759_65_13656.png', '2022-12-08 21:53:38.098182_59_14190.png', '2022-12-08 21:53:38.180636_55_13150.png', '2022-12-08 21:53:38.261705_54_11044.png', '2022-12-08 21:53:38.346376_67_11908.png', '2022-12-08 21:53:38.586157_59_11200.png', '2022-12-08 21:53:38.715544_64_10425.png', '2022-12-08 21:53:38.837041_64_12068.png', '2022-12-08 21:53:38.924294_77_13531.png', '2022-12-08 21:53:39.008601_60_10283.png', '2022-12-08 21:53:39.174924_60_10160.png', '2022-12-08 21:53:39.256190_65_10555.png', '2022-12-08 21:53:39.340980_63_10775.png']

runOnce = True
highCon = 0
for img in lst:
    tmp = img.split("_")
    con = tmp[1]
    if runOnce:
        highCon = con
        runOnce = False
    else:
        if con > highCon:
            highCon = con

print(highCon)

lst 是一个包含文件名列表的列表。文件名由datetime_score_area.png组成。我必须从列表中找到文件的第一和第二高分并打印出来。使用上面的代码,我能够打印最高的文件名,但不确定如何找到第二高的文件名。

接下来我可以尝试什么?

【问题讨论】:

    标签: python python-3.x list


    【解决方案1】:

    编写一个函数来隔离分数并转换为 int。然后您可以将其用作钥匙排序()如下:

    lst = ['2022-12-08 21:53:28.230556_54_12748.png', '2022-12-08 21:53:28.314088_86_14029.png', '2022-12-08 21:53:28.363581_72_12540.png', '2022-12-08 21:53:28.448268_65_13491.png', '2022-12-08 21:53:28.907252_50_7001.png', '2022-12-08 21:53:28.998206_55_13458.png', '2022-12-08 21:53:29.066905_60_8857.png', '2022-12-08 21:53:29.167242_54_8327.png', '2022-12-08 21:53:29.260880_52_11163.png', '2022-12-08 21:53:29.318770_52_7859.png', '2022-12-08 21:53:29.992619_51_7173.png', '2022-12-08 21:53:30.380722_55_7301.png', '2022-12-08 21:53:31.546448_59_7005.png', '2022-12-08 21:53:31.820877_53_6044.png', '2022-12-08 21:53:31.901512_51_5818.png', '2022-12-08 21:53:35.622028_56_7221.png', '2022-12-08 21:53:35.706456_72_7522.png', '2022-12-08 21:53:36.785644_53_8222.png', '2022-12-08 21:53:36.872902_60_10873.png', '2022-12-08 21:53:36.952308_59_10217.png', '2022-12-08 21:53:37.034774_57_7258.png', '2022-12-08 21:53:37.151830_52_7745.png', '2022-12-08 21:53:37.236664_80_13584.png', '2022-12-08 21:53:37.401254_70_13281.png', '2022-12-08 21:53:37.485339_91_16176.png', '2022-12-08 21:53:37.564524_74_13113.png', '2022-12-08 21:53:37.652097_90_13526.png', '2022-12-08 21:53:37.729431_82_13303.png', '2022-12-08 21:53:37.777823_66_12084.png', '2022-12-08 21:53:37.857692_72_14855.png', '2022-12-08 21:53:37.939566_72_16755.png', '2022-12-08 21:53:38.017759_65_13656.png', '2022-12-08 21:53:38.098182_59_14190.png', '2022-12-08 21:53:38.180636_55_13150.png', '2022-12-08 21:53:38.261705_54_11044.png', '2022-12-08 21:53:38.346376_67_11908.png', '2022-12-08 21:53:38.586157_59_11200.png', '2022-12-08 21:53:38.715544_64_10425.png', '2022-12-08 21:53:38.837041_64_12068.png', '2022-12-08 21:53:38.924294_77_13531.png', '2022-12-08 21:53:39.008601_60_10283.png', '2022-12-08 21:53:39.174924_60_10160.png', '2022-12-08 21:53:39.256190_65_10555.png', '2022-12-08 21:53:39.340980_63_10775.png']
    
    def score(s):
        return int(s.split('_')[1])
    
    print(*sorted(lst, key=score)[-2:], sep='
    ')
    

    输出:

    2022-12-08 21:53:37.652097_90_13526.png
    2022-12-08 21:53:37.485339_91_16176.png
    

    笔记:

    您可以使用 lambda 表达式钥匙但这是我的偏好

    【讨论】:

      【解决方案2】:

      您可以先对列表进行排序:

      lst = ['2022-12-08 21:53:28.230556_54_12748.png', '2022-12-08 21:53:28.314088_86_14029.png', '2022-12-08 21:53:28.363581_72_12540.png', '2022-12-08 21:53:28.448268_65_13491.png', '2022-12-08 21:53:28.907252_50_7001.png', '2022-12-08 21:53:28.998206_55_13458.png', '2022-12-08 21:53:29.066905_60_8857.png', '2022-12-08 21:53:29.167242_54_8327.png', '2022-12-08 21:53:29.260880_52_11163.png', '2022-12-08 21:53:29.318770_52_7859.png', '2022-12-08 21:53:29.992619_51_7173.png', '2022-12-08 21:53:30.380722_55_7301.png', '2022-12-08 21:53:31.546448_59_7005.png', '2022-12-08 21:53:31.820877_53_6044.png', '2022-12-08 21:53:31.901512_51_5818.png', '2022-12-08 21:53:35.622028_56_7221.png', '2022-12-08 21:53:35.706456_72_7522.png', '2022-12-08 21:53:36.785644_53_8222.png', '2022-12-08 21:53:36.872902_60_10873.png', '2022-12-08 21:53:36.952308_59_10217.png', '2022-12-08 21:53:37.034774_57_7258.png', '2022-12-08 21:53:37.151830_52_7745.png', '2022-12-08 21:53:37.236664_80_13584.png', '2022-12-08 21:53:37.401254_70_13281.png', '2022-12-08 21:53:37.485339_91_16176.png', '2022-12-08 21:53:37.564524_74_13113.png', '2022-12-08 21:53:37.652097_90_13526.png', '2022-12-08 21:53:37.729431_82_13303.png', '2022-12-08 21:53:37.777823_66_12084.png', '2022-12-08 21:53:37.857692_72_14855.png', '2022-12-08 21:53:37.939566_72_16755.png', '2022-12-08 21:53:38.017759_65_13656.png', '2022-12-08 21:53:38.098182_59_14190.png', '2022-12-08 21:53:38.180636_55_13150.png', '2022-12-08 21:53:38.261705_54_11044.png', '2022-12-08 21:53:38.346376_67_11908.png', '2022-12-08 21:53:38.586157_59_11200.png', '2022-12-08 21:53:38.715544_64_10425.png', '2022-12-08 21:53:38.837041_64_12068.png', '2022-12-08 21:53:38.924294_77_13531.png', '2022-12-08 21:53:39.008601_60_10283.png', '2022-12-08 21:53:39.174924_60_10160.png', '2022-12-08 21:53:39.256190_65_10555.png', '2022-12-08 21:53:39.340980_63_10775.png']
      lst.sort(key= lambda x: int(x.split("_")[1]),reverse=True)
      print(lst[0]) # Highest score filename
      print(lst[1]) # Second highest filename
      

      如果您不想更改原始列表的顺序,您也可以使用 sorted:

      highest, nxt_highest = sorted(lst, key=lambda x: int(x.split("_")[1]),reverse=True)[:2]
      

      【讨论】:

        【解决方案3】:

        代码:

        sorted([int(l.split('_')[1]) for l in lst], reverse=True)[:2] ## [91, 90]
        

        【讨论】:

          【解决方案4】:

          如果“最高”意味着按字母顺序排列,那么一个简单的sort 就足够了:

          lst.sort(reverse=True)
          print(lst[0]) # highest
          print(lst[1]) # second highest
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-02-28
            • 2012-09-30
            • 2012-04-25
            • 2017-10-26
            • 2022-01-22
            • 1970-01-01
            • 2021-03-30
            • 2020-12-02
            相关资源
            最近更新 更多