python 15:列表排序

作者: 金石明镜 | 来源:发表于2019-11-15 20:45 被阅读0次

    列表排序使用方法sort()。

    可以指定排序键和是否倒序的参数。默认按原值排序,且为正序。

    一、按原值排序

    >>> s=[1,2,-1,-3,7,-9]

    >>> s

    [1, 2, -1, -3, 7, -9]

    >>> s.sort()

    >>> s

    [-9, -3, -1, 1, 2, 7]

    >>> s.sort(reverse=True)

    >>> s

    [7, 2, 1, -1, -3, -9]

    二、指定排序键对列表排序

    排序键是一个函数。

    下面按绝对值排序。

    先导入math模块,以便使用绝对值函数。

    >>> import math

    >>> s.sort(key=lambda x:abs(x))

    >>> s

    [1, -1, 2, -3, 7, -9]

    >>> s.sort(key=lambda x:abs(x), reverse=True)

    >>> s

    [-9, 7, -3, 2, 1, -1]

    下面的例子中,列表的元素是字典。

    >>> li=[{"age":20,"name":"def"},{"age":25,"name":"abc"},{"age":10,"name":"ghi"}]

    >>> li=sorted(li, key=lambda x:x["age"])

    >>> print(li)

    [{'age': 10, 'name': 'ghi'}, {'age': 20, 'name': 'def'}, {'age': 25, 'name': 'abc'}]

    >>> li=sorted(li, key=lambda x:x['name'])

    >>> li

    [{'age': 25, 'name': 'abc'}, {'age': 20, 'name': 'def'}, {'age': 10, 'name': 'ghi'}]

    三、对字典排序

    字典是不能直接排序的,因为只有列表可以排序,因此,只能先转化为列表。

    >>>d={'beautiful': 10, 'wonderful': 12, 'love': 17}

    >>>content=list(d.items())

    >>> content

    [('beautiful', 10), ('wonderful', 12), ('love', 17)]

    >>> content.sort(key=lambda x:x[0])

    >>> content

    [('beautiful', 10), ('love', 17), ('wonderful', 12)]

    >>> content.sort(key=lambda x:x[1])

    >>> content

    [('beautiful', 10), ('wonderful', 12), ('love', 17)]

    四、排序键为自定义函数

    前面举出的排序键为lambda函数。也可以用自定义函数。

    先建立一个函数,并运行:

    import math

    def func(x):

      return x[1]%3

    再执行下面的命令:

    >>>d={'beautiful': 10, 'wonderful': 12, 'love': 17}

    >>>content=list(d.items())

    >>> content.sort(key=func)

    >>> content

    [('wonderful', 12), ('beautiful', 10), ('love', 17)]

    >>> content.sort(key=func,reverse=True)

    >>> content

    [('love', 17), ('beautiful', 10), ('wonderful', 12)]

    相关文章

      网友评论

        本文标题:python 15:列表排序

        本文链接:https://www.haomeiwen.com/subject/inteictx.html