排序

作者: 泡菜鸡丁 | 来源:发表于2019-11-11 14:32 被阅读0次

    1.sort方法

    python内置了sort方法,可以很方便地对某个list进行排序

    2.自定义排序(例如,按关键词的权重排序,按人的年龄排序,等等)

    若list中每个元素都是2-tuple,tuple中第一个元素为string类型的keyword,第二个元素为该字符串对应的权重(int类型),希望权重排序(从高到低)

    例如:l = [("a",4),("b",2),("c",8),("d",1)]

    l.sort( key= lambda d:-d[-1])

    #负号表示倒序,正号表示正序

    print(l)

    #打印:[("c",8),("a",4),("b",2),("d",1)]

    3. dict排序

    对字典的排序,因为每一个项包括一个键值对,所以要选择可比较多键或值进行排序

    sort(iterable[,cmp[,key[,reverse]]])

    例如:d = {"ok":1,"no":2}

    # 对字典按键排序,用元组列表的形式返回

    print(sorted(d. items(), key= lambda a:a[0]))

    print( sorted(d))

    # [("no",2),("ok",1)]

    # [" no"," ok"]

    注意:print(d)打印原字典,并未发生变化

    对原字典若按照值排序,用元组列表形式返回,排序后再转成字典,则无法保证排序。

    4.类排序

    class test:

        def __init__(self,a,b):

            self.a = a

            self.b =

    test1 = test(5,25)

    test2 = test(50,35)

    test3 = test(10,15)

    tests = [test1,test2,test3]

    # 以key来排序

    result = sorted(tests,key=lambda d:d.a)

    for item in result:

        print("a:%s" % item.a)

    # 遍历原资料,顺序未有变化

    for item in result:

        print("a:%s" % item.a)

    注:在python中对列表、元组、字典等内置的数据结构的处理事很方便的事情。python借鉴lisp中的很多函数式计算方式来处理列表,可以极大的简化我们的代码。

    ①set():将元组、列表转换成没有重复项的集合

    ②list():将集合、元组转换成列表

    ③tuple():将集合、列表转换成元组

    ④map(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,且返回一个值,map将每一次调用函数返回的值组成一个新的列表返回。

    ⑤filter(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,返回bool类型的值,filter将返回true的元素组成新的列表

    ⑥reduce(func,list):将list的元素,挨个取出和下一个元素通过func计算后将结果和再下一个元素继续计算。

    相关文章

      网友评论

          本文标题:排序

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