如何解决使用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]]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。