[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/guyuyun/algorithm/master/python_sort.md [Back]  [Original]

#python

PythonpythonpythonpythonPython

##sorted()/list.sort()

###

pythonlistsorted(),

	>>> a=[5,3,6,1,9,2]
	>>> sorted(a)       #asorted
	[1, 2, 3, 5, 6, 9]  #a
	>>> a
	[5, 3, 6, 1, 9, 2]

list.sort()

    >>> a.sort()
    >>> a               #list.sort()
    [1, 2, 3, 5, 6, 9]  #a

**sortedlist.sort():**list.sort()list

    >>> b_dict={1:'e',3:'m',9:'a',5:'e'}
    >>> b_dict.sort()
    Traceback (most recent call last):
      File "", line 1, in 
      AttributeError: 'dict' object has no attribute 'sort'

sorted

    >>> b_dict
    {1: 'e', 3: 'm', 5: 'e', 9: 'a'}
    >>> sorted(b_dict)
    [1, 3, 5, 9]

sorteddictinoarykeylist

###

list.sort()sortedkey

sorted

    >>> qw="I am Qiwsir you can read my articles im my blog".split()
    >>> qw
    ['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']
    >>> sorted(qw,key=str.lower)        #
    ['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

list.sort()
    
    >>> qw  
    ['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']
    >>> qw.sort(key=str.lower)
    >>> qw
    ['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

key

    >>> name_mark_age = [('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16)]
    >>> sorted(name_mark_age, key = lambda x: x[2])     #
    [('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16)]

    >>> sorted(name_mark_age, key = lambda x: x[1])     #
    [('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14)]
    
    >>> sorted(name_mark_age, key = lambda x: x[0])     #
    [('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhangsan', 'A', 15)]

python

    >>> from operator import itemgetter    #https://docs.python.org/2/library/operator.html#module-operator
	>>> name_mark_age.append(('zhaoliu','B',16))
	>>> name_mark_age
	[('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]
	
    >>> sorted(name_mark_age,key=itemgetter(2))     #
	[('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

	>>> sorted(name_mark_age,key=itemgetter(1,2))   #
	[('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14), ('zhaoliu', 'B', 16)]




    >>> class Student:
            def __init__(self, name, grade, age):
                self.name = name
                self.grade = grade
                self.age = age
            
            def __repr__(self):
                return repr((self.name, self.grade, self.age))
            
    >>> student_objects = [
            Student('john', 'A', 15),       #class Student
            Student('jane', 'B', 12),       #student_objects[i].age,i=0,john
            Student('dave', 'B', 10),
            ]
            
    >>> sorted(student_objects, key=lambda student: student.age)
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

operator
    
    >>>from operator import attrgetter
    >>> sorted(student_objects, key=attrgetter('age'))
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
    >>> sorted(student_objects, key=attrgetter('grade', 'age'))
    [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

****sorted

reverse=True

    >>>from operator import itemgetter 
    >>> name_mark_age
    [('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]
    >>> sorted(name_mark_age, key=itemgetter(2),reverse=True)
    [('WANGWU', 'A', 16), ('zhaoliu', 'B', 16), ('zhangsan', 'A', 15), ('LISI', 'B', 14)]

##sorted

pythonsortedpythonsortedTimsortTimsort wikihttp://en.wikipedia.org/wiki/Timsorthttp://blog.csdn.net/yangzhongblog/article/details/8184707sorted

Timsort

![](./pics/timsort1.png)



![](./pics/timsort2.png)

sorted

python

githubpython

Web Proxy Viewer  |  New URL  |  Original Page