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

Python 按降序排列字符串列表(根据长度)

Python 按降序排列字符串列表(根据长度),python,python-3.x,string,sorting,lambda,Python,Python 3.x,String,Sorting,Lambda,我想按字符串长度的降序对字符串列表进行排序。如果有两个或更多长度相同的字符串,则顺序应按升序进行词典编纂 输入:['a','bb','cc','ddd','bbc'] 预期输出:['bbc','ddd','bb','cc','a'] 在上面的示例中,列表按字符串长度的降序排列。但由于字符串“bb”和“cc”的长度相同,因此它们按字典顺序排列(升序) 我的职能是—— sorted(样本列表,key=lambda x:(len(x),x),reverse=True) 但是,lambda函数中的x给出

我想按字符串长度的降序对字符串列表进行排序。如果有两个或更多长度相同的字符串,则顺序应按升序进行词典编纂

输入:['a','bb','cc','ddd','bbc']

预期输出:['bbc','ddd','bb','cc','a']

在上面的示例中,列表按字符串长度的降序排列。但由于字符串“bb”和“cc”的长度相同,因此它们按字典顺序排列(升序)

我的职能是——

sorted(样本列表,key=lambda x:(len(x),x),reverse=True)

但是,lambda函数中的x给出了一个附加参数(如果
len(x)
相同)。但是,由于我设置了
reverse=True
,所以它按字典顺序递减而不是升序(当len(x)相等时)对字符串进行排序

从上述代码中观察到的输出:['ddd','bbc','cc','bb','a']

我不知道我可以在lambda函数中做什么更改来适应这种情况

参考资料:

您可以简单地使用
(-len(x),x)
而不是
(len(x),x)
反向=True

>>> sample_list = ['a', 'bb', 'cc', 'ddd', 'bbc']
>>> sorted(sample_list, key=lambda x: (-len(x), x))
['bbc', 'ddd', 'bb', 'cc', 'a']
这将首先按长度的降序对列表进行排序(因为
-len(x)
),然后按字典顺序对长度相同的字符串进行排序