使用lambda函数进行Python列表排序

问题描述

我有一个[[['foo','$total',400],['foo','sauce',300],'bacon',100]],[['bar','bro',200],['bar',-200],'sup',-400]]] 列表

我想应用排序列表理解,以使“ $ total”在列表中排在第一位,其余列表按列表中的第三项进行排序。

输出示例:[[['foo',-400]]]

在此,“ $ total”在所有子列表中排在第一位,其余列表则在倒数第二/三位倒排。

我尝试了一下,但是没有用:

 for index,ele in enumerate(final_res):
    final_res[index] = list(sorted(final_res[index],key=lambda x: [ x[1] if x[1] == "total" else x[2] ],reverse=True))

请让我知道通过列表理解排序实现这一目标的最佳方法。

解决方法

使用自定义功能

例如:

data = [[['foo','$total',400],['foo','sauce',300],'bacon',100]],[['bar','bro',200],['bar',-200],'sup',-400]]] 
for i in data:
    i.sort(key=lambda x: (x[1] == '$total',x[2]),reverse=True)
print(data)
#OR data = [sorted(i,key=lambda x: (x[1] == '$total',reverse=True) for i in data]

输出:

[[['foo',-400]]]

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...