Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 - Fatal编程技术网

在python中对字符串列表进行排序,以便首先显示特定的字符串(如果存在)

在python中对字符串列表进行排序,以便首先显示特定的字符串(如果存在),python,list,sorting,Python,List,Sorting,我是python新手,希望有人能帮我解决这个问题。我需要对字符串列表进行排序: s = ['status', 'value', 'place', 'tag'] 我需要以这样的方式进行排序,排序后的列表如下所示: s_sorted = ['tag', 'place', 'status', 'value'] 按顺序排列单词时,特定字符串'tag'需要始终位于前面,其余字符串将被排序。我试着提出一个比较器,使我能够这样做。但到目前为止我还没能做到。如果有人有解决这类问题的经验,我希望你们能分享一些

我是python新手,希望有人能帮我解决这个问题。我需要对字符串列表进行排序:

s = ['status', 'value', 'place', 'tag']
我需要以这样的方式进行排序,排序后的列表如下所示:

s_sorted = ['tag', 'place', 'status', 'value']

按顺序排列单词时,特定字符串
'tag'
需要始终位于前面,其余字符串将被排序。我试着提出一个比较器,使我能够这样做。但到目前为止我还没能做到。如果有人有解决这类问题的经验,我希望你们能分享一些想法

您可以这样做:

>>> s = ['status', 'value', 'place', 'tag']
>>> s.sort(key=lambda x: (x != 'tag', x))
>>> s
['tag', 'place', 'status', 'value']
这里将比较包含布尔值的元组和项本身,对于
'tag'
,布尔值将是
False
,因此它将始终位于前面。在Python中,其余值的布尔值分别为
True
,和
True
False

s = ['status', 'value', 'place', 'tag']
s_sorted = sorted(s, key=lambda x:(x!='tag', x))
生成一个元组,如果元素不是
“标记”
,则第一个元素为布尔值<代码>排序按第一个元素排序,然后按第二个元素排序。这样,
tag
总是排在第一位,因为
False
排序在
True
之前

对于剩余的元素(不等于
'tag'
),排序通常在第二个元组元素上进行,这是对值本身的字典式字符串排序


从排序的

key
指定一个参数的函数,该参数用于从每个列表元素提取比较键:
key=str.lower
。默认值为
None
(直接比较元素)


简单的方法怎么样

first_item = 'tag'
s.pop(s.index(first_item))
s.sort()
s.insert(0, first_item)

假设
第一个\u项在目标列表中只出现一次,上述操作将起作用。

我们如何知道哪个是标记?它总是最后一个吗?不是真的。列表中的某个地方有一个特定的字符串。关于传递元组的
键的文档在哪里?我找不到它。它在哪里说如果
函数返回一个元组,它将首先按第一个元素进行比较,然后按第二个元素进行比较,依此类推?或者这不是它在做什么?@Two Bitalchest这里可能没有提到,但key返回的值用于比较,通常这就是元组/列表比较的工作方式。是的,就是这样。这就是元组的排序方式。类似于排序字符串首先按第一个字符排序,然后按第二个字符排序,依此类推。同样的机制。这是另一篇关于它的帖子:键函数返回一个元组用于排序,这很聪明。如果有多个“标记”字符串??虽然OP没有问。但是这种方法对我来说并不好。编辑:你已经提到我不读书了。