代码之家  ›  专栏  ›  技术社区  ›  dythe

在Python中按整数降序排序列表[重复]

  •  0
  • dythe  · 技术社区  · 6 年前

    result=[(fuzz.WRatio(n, n2),n2,sdf.index[x],bdf.index[y])
                        for y, n2 in enumerate(Col2['name']) if fuzz.WRatio(n, n2)>70 and len(n2) >= 2]
        print('Result: {}'.format(result))
    

    将产生以下结果:

    String to compare to raw data: ABC
    Result: [(90, u'ABC COMPANY', 21636, 100079), (86, u'ABC COMPANY CO', 21636, 72933), (86, u'ABC (M) SDN BHD', 21636, 92592), (95, u'ABC PTE LTD.', 21636, 171968)]
    

    我希望能够按每个数组的第一个数字降序排列整个列表。我试过用

    result.sort()
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   Dani Mesejo    6 年前
    from operator import itemgetter
    
    values = [(90, u'ABC COMPANY', 21636, 100079), (86, u'ABC COMPANY CO', 21636, 72933), (86, u'ABC (M) SDN BHD', 21636, 92592), (95, u'ABC PTE LTD.', 21636, 171968)]
    values.sort(key=itemgetter(0), reverse=True)
    print(values)
    

    输出

    [(95, 'ABC PTE LTD.', 21636, 171968), (90, 'ABC COMPANY', 21636, 100079), (86, 'ABC COMPANY CO', 21636, 72933), (86, 'ABC (M) SDN BHD', 21636, 92592)]
    

    另一种方法是使用lambda函数作为键:

    values.sort(key=lambda x: x[0], reverse=True)
    
        2
  •  1
  •   leotrubach    6 年前

    list.sort() 有一个 reverse 夸格。使用它