Python可迭代序列排序总结

列表排序

示例:lst = [12, 6, 1, 3, 10]

方法一:使用sort

def list_sort(lst):
    lst.sort()	# 就地排序,没有返回值
    return lst

补充:list.sort(key=None, reverse=False)可以指定排序规则和是否降序

注意sort只适用于列表,其内部采用的排序算法是Timsort,一种结合归并排序和插入排序的算法

方法二:使用sorted

def list_sort(lst):
    return sorted(lst)

补充:sorted(iterable, key, reverse)也可以指定排序规则和是否降序

注意sorted使用于所有可迭代对象,是新建一个对象,原对象不变


### 字典排序

按key排序


##### 方法一:使用sorted和lambda
def dict_sort_by_key(dic):
    return dict(sorted(dic.items(), key=lambda x: x[0]))

##### 方法二:使用sorted字典推导式
def dict_sort_by_key(dic):
    return {key:dic[key] for key in sorted(dic)}

#### 按value排序
方法一:使用sorted和lambda
def dict_sort_by_value(dic):
    return dict(sorted(dic.items(), key=lambda x: x[1]))

##### 方法二:使用sorted字典推导式
def dict_sort_by_value(dic):
    # 使用字典的get方法的返回值作为排序规则
    return {key:dic[key] for key in sorted(dic, key=dic.get)}
posted @ 2019-06-02 21:13  乘月归  阅读(800)  评论(0编辑  收藏  举报