美文网首页
OrderedDict\Sorted

OrderedDict\Sorted

作者: 番茄酱的汪 | 来源:发表于2020-05-08 13:45 被阅读0次

    OrderedDict

    很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类OrderedDict,实现了对字典对象中元素的排序。请看下面的实例:

    import collections
    print "Regular dictionary"
    d={}
    d['a']='A'
    d['b']='B'
    d['c']='C'
    for k,v in d.items():
        print k,v 
    print "\nOrder dictionary"
    d1 = collections.OrderedDict()
    d1['a'] = 'A'
    d1['b'] = 'B'
    d1['c'] = 'C'
    d1['1'] = '1'
    d1['2'] = '2'
    for k,v in d1.items():
        print k,v
    
    输出:
    Regular dictionary
    a A
    c C
    b B
    
    Order dictionary
    a A
    b B
    c C
    1 1
    2 2
    

    Sorted

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

    sorted(iterable, cmp=None, key=None, reverse=False)

    a = [5,7,6,3,4,1,2]
    b = sorted(a)       # 保留原列表
    a 
    [5, 7, 6, 3, 4, 1, 2]
    >>> b
    [1, 2, 3, 4, 5, 6, 7]
     
    L=[('b',2),('a',1),('c',3),('d',4)]
    sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函数
    # cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
    
    >>> [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    sorted(L, key=lambda x:x[1])               # 利用key
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    

    相关文章

      网友评论

          本文标题:OrderedDict\Sorted

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