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)
),然后按字典顺序对长度相同的字符串进行排序