我是Python的新手。我想对具有特定条件的列表进行排序。 例如:
我正在获取环境详细信息并将其存储为如下列表。
ls = ['qa','uat','prod','dev']
它们可以是任何订单。
ls = ['uat','qa','dev','prod']
但结果列表应为:
rls = ['prod','qa','uat','dev']
答案 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']
>>>