Python 列表与字典 排序 的奇妙之旅

Python 列表与字典 排序 的奇妙之旅

文章目录

  • Python 列表与字典 排序 的奇妙之旅
    • 使用函数或方法说明
    • 列表的排序方法
      • 方法一
      • 方法二
    • 字典的排序方法
      • 方法一
      • 方法二
    • 示例全览

使用函数或方法说明

一. 内置函数: sorted()
sorted() 函数对所有可迭代的对象进行排序操作。

sorted(iterable, key=None, reverse=False)
参数说明:

  • iterable – 可迭代对象。
  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭 代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

二. List sort()方法
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
list.sort( key=None, reverse=False)
参数说明:

  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法是对已经存在的列表进行操作, 返回内容为空
而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

Python 列表与字典 排序 的奇妙之旅_第1张图片

列表的排序方法

方法一

def list_one(n):
    """
    利用列表自带方法 .sort()
    :param n: 列表中有数值数
    :return: 列表排序后结果
    """
    # 生成随机数值 方法一
    # list_dic = [random.randint(1, 100) for i in range(n)]
    # 生成随机数值 方法二
    list_dic = random.sample(range(1, 101), n)

    # 注意: 列表sort只是一个方法,返回的值为None,但列表内容已经被排序修改
    list_dic.sort(reverse=True)
    return list_dic

方法二

def list_two(n):
    """
    利用公共方法 sorted()
    :param n: 列表中有数值数
    :return: 列表排序后结果
    """
    # 生成随机数值 方法一
    # list_dic = [random.randint(1, 100) for i in range(n)]
    # 生成随机数值 方法二
    list_dic = random.sample(range(1, 101), n)

    list_dic = sorted(list_dic, reverse=True)
    return list_dic

字典的排序方法

相比列表排序,字典排序会麻烦一点,且不是真正的把字典内容修改,只是利用排序后的内容

方法一

def dict_one():
    """
    主要用到了字典中的内置方法 .items()
    :return: 字典排序后结果
    """
    scores = {
     '语文': 89, '数学': 92, '英语': 93}
    dict_sort = sorted(scores.items(), key=lambda x: x[1], reverse=True)
    return dict_sort

方法二

def dict_two():
    """
    思路是将字典中的key和value提取出来并且换个位置,
    利用zip内置函数打包在一块
    :return: 字典排序后结果
    """
    scores = {
     '语文': 89, '数学': 92, '英语': 93}
    dict_sort = list(zip(scores.values(), scores.keys()))
    # 注意: 列表sort只是一个方法,返回的值为None,但列表内容已经被排序修改
    dict_sort.sort(key=lambda x: x[0], reverse=True)
    return dict_sort

示例全览

import random

"""
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法是对已经存在的列表进行操作, 返回内容为空
而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
"""


def list_one(n):
    """
    利用列表自带方法 .sort()
    :param n: 列表中有数值数
    :return: 列表排序后结果
    """
    # 生成随机数值 方法一
    # list_dic = [random.randint(1, 100) for i in range(n)]
    # 生成随机数值 方法二
    list_dic = random.sample(range(1, 101), n)

    # 注意: 列表sort只是一个方法,返回的值为None,但列表内容已经被排序修改
    list_dic.sort(reverse=True)
    return list_dic


def list_two(n):
    """
    利用公共方法 sorted()
    :param n: 列表中有数值数
    :return: 列表排序后结果
    """
    # 生成随机数值 方法一
    # list_dic = [random.randint(1, 100) for i in range(n)]
    # 生成随机数值 方法二
    list_dic = random.sample(range(1, 101), n)

    list_dic = sorted(list_dic, reverse=True)
    return list_dic


# 相比列表排序,字典排序会麻烦一点,且不是真正的把字典内容修改,只是利用排序后的内容

def dict_one():
    """
    主要用到了字典中的内置方法 .items()
    :return: 字典排序后结果
    """
    scores = {
     '语文': 89, '数学': 92, '英语': 93}
    dict_sort = sorted(scores.items(), key=lambda x: x[1], reverse=True)
    return dict_sort


def dict_two():
    """
    思路是将字典中的key和value提取出来并且换个位置,
    利用zip内置函数打包在一块
    :return: 字典排序后结果
    """
    scores = {
     '语文': 89, '数学': 92, '英语': 93}
    dict_sort = list(zip(scores.values(), scores.keys()))
    # 注意: 列表sort只是一个方法,返回的值为None,但列表内容已经被排序修改
    dict_sort.sort(key=lambda x: x[0], reverse=True)
    return dict_sort


if __name__ == '__main__':
    func = [list_one(10), list_two(10), dict_one(), dict_two()]
    for i in func:
        print(i)

你可能感兴趣的:(python,数据结构,列表,字典)