两种方法
sorted(list):返回一个对象,原来的list不变,生成一个新的排好的list对象;
list.sort():不会返回对象,改变原有list。
排序实例:
L = [2, 4, 1, 5, 9]
>>> sorted(L) [1, 2, 4, 5, 9] >>> L.sort() >>> print L [1, 2, 4, 5, 9]
reverse关键字:排序规则。 reverse = True 或者 reverse = False,有默认值,默认为升序排列(False)
>>> sorted(L,reverse=True) [9, 5, 4, 2, 1] >>> L.sort(reverse=True) >>> print L [9, 5, 4, 2, 1]
字典的特点是无序,可以按照键(key)或者值(value)对其进行排序,但是返回的结果肯定不能是字典。
排序实例:
D = {'jack': 23, 'rose': 21, 'flank': 22}
>>> sorted(D.items(), key=lambda d:d[1]) # 值(value)排序 [('rose', 21), ('flank', 22), ('jack', 23)] >>> sorted(D.items(), key=lambda d:d[0]) # 按键(key)排序按 [('flank', 22), ('jack', 23), ('rose', 21)]
sorted(iterable[, cmp[, key[, reverse]]])
iterable:是可迭代类型类型;
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
>>> import operator >>> print sorted(D.items(), key=operator.itemgetter(1)) # 值(value)排序 [('rose', 21), ('jack', 23), ('flank', '23')] >>> print sorted(D.items(), key=operator.itemgetter(0)) # 按键(key)排序按 [('flank', '23'), ('jack', 23), ('rose', 21)]
和list一样,加入reverse参数即可
>>> sorted(D.items(), key=lambda d:d[0], reverse=True) # 按键(key)排序按 [('rose', 21), ('jack', 23), ('flank', 22)] >>> sorted(D.items(), key=lambda d:d[1], reverse=True) # 值(value)排序 [('jack', 23), ('flank', 22), ('rose', 21)]
>>> import operator >>> print sorted(D.items(), key=operator.itemgetter(0), reverse=True) # 按键(key)排序按 [('rose', 21), ('jack', 23), ('flank', '23')] >>> print sorted(D.items(), key=operator.itemgetter(1), reverse=True) # 值(value)排序 [('flank', '23'), ('jack', 23), ('rose', 21)]
指定list中字典的某个键值进行排序
排序实例:
D = [{'name': 'jack', 'age': 23}, {'name': 'rose', 'age': 21}, {'name': 'flank','age': 22}]
>>> import operator >>> sorted(D, key=lambda x : x['age']) [{'age': 21, 'name': 'rose'}, {'age': 22, 'name': 'flank'}, {'age': 23, 'name': 'jack'}]
>>> import operator >>> sorted(D, key=operator.itemgetter('name')) # 根据'name'排序 [{'age': 22, 'name': 'flank'}, {'age': 23, 'name': 'jack'}, {'age': 21, 'name': 'rose'}] >>> sorted(D, key=operator.itemgetter('age')) # 根据'age'排序 [{'age': 21, 'name': 'rose'}, {'age': 22, 'name': 'flank'}, {'age': 23, 'name': 'jack'}]
一样,加入reverse参数即可
>>> import operator >>> sorted(D, key=lambda x : x['age'], reverse=True) [{'age': 23, 'name': 'jack'}, {'age': 22, 'name': 'flank'}, {'age': 21, 'name': 'rose'}]
>>> import operator >>> sorted(D, key=operator.itemgetter('name'), reverse=True) # 根据'name'排序 [{'age': 21, 'name': 'rose'}, {'age': 23, 'name': 'jack'}, {'age': 22, 'name': 'flank'}] >>> sorted(D, key=operator.itemgetter('age'), reverse=True) # 根据'age'排序 [{'age': 23, 'name': 'jack'}, {'age': 22, 'name': 'flank'}, {'age': 21, 'name': 'rose'}]
对列表中的元组排
# 升序, 降序加reverse=True L.sort(key=lambda x:x[0]) # 根据第1个值排序 L.sort(key=operator.itemgetter(0)) # 根据第1个值排序 [('a', 4), ('b', 1), ('c', 2)] L.sort(key=lambda x:x[1]) # 根据第2个值排序 L.sort(key=operator.itemgetter(1)) # 根据第2个值排序 [('b', 1), ('c', 2), ('a', 4)]