如何在python中使用用户定义的条件对列表进行排序?

时间:2015-04-24 19:04:20

标签: python

我是Python的新手。我想对具有特定条件的列表进行排序。 例如:

我正在获取环境详细信息并将其存储为如下列表。     ls = ['qa','uat','prod','dev'] 它们可以是任何订单。     ls = ['uat','qa','dev','prod']

但结果列表应为:

rls = ['prod','qa','uat','dev']

2 个答案:

答案 0 :(得分:0)

AFAIK,您可以定义自定义lambda函数并将它们作为键参数发送到python中的sorted函数:

已排序(list,key = lambdafn)

这个lambda fn应该有布尔返回值,否则不起作用。

终于掌握了文档,请点击此处查看: https://wiki.python.org/moin/HowTo/Sorting/

PS:抱歉答案风格很差,首先回答SO

答案 1 :(得分:0)

您可以使用自定义比较器功能,如https://wiki.python.org/moin/HowTo/Sorting#The_Old_Way_Using_the_cmp_Parameter

中所述

或者您可以使用键函数(通过将key关键字参数传递给list.sort)将要排序的值转换为另一个值:

>>> ls = ['qa','uat','prod','dev']
>>> ls.sort(key=lambda x: (1,x) if x=='dev' else (0,x))
>>> ls
['prod', 'qa', 'uat', 'dev']
>>>

或使用函数做同样的事情:

>>> def my_key_func(x):
...     if x=='dev':
...         return (1,x)
...     else:
...         return (0,x)
...
>>> ls.sort(key=my_key_func)
>>> ls
['prod', 'qa', 'uat', 'dev']
>>>