相关疑难解决方法(0)

按多个属性对列表进行排序?

我有一份清单清单:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
Run Code Online (Sandbox Code Playgroud)

如果我想按一个元素排序,比如高/短元素,我可以通过s = sorted(s, key = itemgetter(1)).

如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?

python sorting

398
推荐指数
5
解决办法
25万
查看次数

如何按字符串的长度排序,然后按字母顺序排序?

我现在是python的新手并且遇到了这个问题,似乎找不到合适的答案.

问题:给定一个单词列表,按照长度(最长到最短)的顺序返回一个具有相同单词的列表,第二个排序标准应该是按字母顺序排列的.提示:你需要考虑两个功能.

这是我到目前为止:

def bylength(word1,word2):
    return len(word2)-len(word1)

def sortlist(a):
    a.sort(cmp=bylength)
    return a
Run Code Online (Sandbox Code Playgroud)

它按长度排序,但我不知道如何将第二个标准应用于此类,即按字母顺序降序.

python sorting

59
推荐指数
2
解决办法
7万
查看次数

按长度排序的列表,但在步骤中按字母顺序排列相同的长度

我的Python字符串列表类似x但足够长:

x = ['aaa','ab','aa','c','a','b','ba']      
Run Code Online (Sandbox Code Playgroud)

我想对此列表进行排序为: ['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']和我一样在以下2步:

>>> x.sort()   
>>> x.sort(key=len)      
>>> x
['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']   
Run Code Online (Sandbox Code Playgroud)

但我需要一步到位:我还使用lambda函数绑定(采取帮助):

>>> x.sort(key=lambda item: (item, len(item)))
>>> x
['a', 'aa', 'aaa', 'ab', 'b', 'ba', 'c']  
Run Code Online (Sandbox Code Playgroud)

但不是我想要的:

有可能一步到位吗?让我开心.

我的Python:

~$ python --version  
Python 2.6.6
Run Code Online (Sandbox Code Playgroud)

python python-2.6

6
推荐指数
1
解决办法
1735
查看次数

标签 统计

python ×3

sorting ×2

python-2.6 ×1