我有一份清单清单:
[[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的新手并且遇到了这个问题,似乎找不到合适的答案.
问题:给定一个单词列表,按照长度(最长到最短)的顺序返回一个具有相同单词的列表,第二个排序标准应该是按字母顺序排列的.提示:你需要考虑两个功能.
这是我到目前为止:
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字符串列表类似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)