例如,在python中你有一个这样的列表:
test = [[0, 'cde', 'efg'], [0, 'ac', 'dfg'], [0, 'ab', 'dfg'], [0, 'efg', 'cde']]
并且您希望按字母顺序对此列表中的第2和第3个元素(即索引1和2)进行排序,即新列表:
test = [[0, 'cde', 'efg'], [0, 'ab', 'dfg'], [0, 'ac', 'dfg'], [0, 'efg', 'cde']]
如何才能实现这一目标?
答案 0 :(得分:2)
你可以这样做:
res = test[:1] + sorted(test[1:3]) + test[3:]
答案 1 :(得分:0)
如果您想根据2 nd 和3 rd 元素进行排序,请使用operator.itemgetter
:
from operator import itemgetter
test = [[0, 'cde', 'efg'], [0, 'ac', 'dfg'], [0, 'ab', 'dfg'], [0, 'efg', 'cde']]
print sorted(test, key=itemgetter(1,2))
输出
[[0, 'ab', 'dfg'], [0, 'ac', 'dfg'], [0, 'cde', 'efg'], [0, 'efg', 'cde']]
答案 2 :(得分:0)
test = [[0, 'cde', 'efg'], [0, 'ac', 'dfg'], [0, 'ab', 'dfg'], [0, 'efg', 'cde']]
sorted(test, key = lambda x: x[1:])
In [109]: test = [[0, 'cde', 'efg'], [0, 'ac', 'dfg'], [0, 'ab', 'dfg'], [0, 'efg', 'cde']]
In [110]: sorted(test,key=lambda x: x[1:])
Out[110]: [[0, 'ab', 'dfg'], [0, 'ac', 'dfg'], [0, 'cde', 'efg'], [0, 'efg', 'cde']]
您可以使用test.sort(key = lambda x: x[1:])
对列表进行排序,以避免在可能的情况下创建新列表。