Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中基于规则的列表排序_Python_List_Sorting_Python 2.7 - Fatal编程技术网

python中基于规则的列表排序

python中基于规则的列表排序,python,list,sorting,python-2.7,Python,List,Sorting,Python 2.7,我有如下清单: ['pt=media:song', 'class=song', 'object=mp3'] ['class=text','pt=transaction:email', 'object=email'] ['category=where','pt=text:where','class:question'] ['object:mp4','class=movie', 'pt=media:movie'] 我希望对它们进行排序,以便始终将字段从“pt=“开始,其余字段按字母顺序排序 因此,

我有如下清单:

['pt=media:song', 'class=song', 'object=mp3']
['class=text','pt=transaction:email', 'object=email']
['category=where','pt=text:where','class:question']
['object:mp4','class=movie', 'pt=media:movie']
我希望对它们进行排序,以便始终将字段从
“pt=“
开始,其余字段按字母顺序排序

因此,结果将是:

['pt=media:song','class=song', 'object=mp3']
['pt=transaction:email','class=text', 'object=email']
['pt=text:where','category=where','class:question'] 
['pt=media:movie','class=movie','object:mp4']

如何执行此操作?

返回每个项目的元组:

sorted(yourlist, key=lambda x: (not x.startswith('pt='), x))
这将首先对以
pt=
开头的任何值进行排序(如
False
True
之前进行排序),任何其他值按字典顺序排序(这意味着应用于文本时与字母顺序相同)

演示:


每项返回一个元组:

sorted(yourlist, key=lambda x: (not x.startswith('pt='), x))
这将首先对以
pt=
开头的任何值进行排序(如
False
True
之前进行排序),任何其他值按字典顺序排序(这意味着应用于文本时与字母顺序相同)

演示:


您的列表中没有日期或其他内容。在这种情况下,“时间顺序”到底意味着什么?您的示例输出使用升序字典顺序。对于文本,这是按字母顺序排列的。列表中没有日期或任何其他内容。在这种情况下,“时间顺序”到底意味着什么?您的示例输出使用升序字典顺序。文本是按字母顺序排列的。