005_002 Python 对字符串列表排序,不区分大小写

代码如下:

#encoding=utf-8

print '中国'

#对字符串列表排序,不区分大小写
print '--DSU方法'
def case_insensitive_sort(sort_strlist):
    auxiliary_list = [(x.lower(),x) for x in sort_strlist] #decorate    
    auxiliary_list.sort()                                   #sort
    return [x[1] for x in auxiliary_list]                   #undecorate

sort_strlist=['a1','A1','B2','a3','1a']

print case_insensitive_sort(sort_strlist)


#方法二 使用内置的sorted 其实就是内置的dsu
print '--内置的sorted' 
#iterable:是可迭代类型;
#cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
#key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
#reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
#返回值:是一个经过排序的可迭代类型,与iterable一样。
print sort_strlist
listnew=sorted(sort_strlist,key=str.lower)
print listnew

#支持unicode和普通字符串
import string
sort_strlist=[u'z中国',u'A日1',u'B爱2',u'啊a3','1a']
listnew=sorted(sort_strlist,key=string.lower)
print listnew

打印结果如下:

中国
--DSU方法
['1a', 'A1', 'a1', 'a3', 'B2']
--内置的sorted
['a1', 'A1', 'B2', 'a3', '1a']
['1a', 'a1', 'A1', 'a3', 'B2']
['1a', u'A\u65e51', u'B\u72312', u'z\u4e2d\u56fd', u'\u554aa3']

你可能感兴趣的:(Python)