您的位置:首页 > 编程语言 > Python开发

python_忽略大小写对字符串列表排序

2011-11-15 18:35 537 查看
直接上代码

string = '''
the stirng
Has many
line In
THE fIle
'''
list_of_string = string.split()
print list_of_string     #将字符串分离开,放入列表中
print '*'*50

def case_insensitive_sort(liststring):
listtemp = [(x.lower(),x) for x in liststring] #将字符串列表,生成元组,(忽略大小写的字符串,字符串)
listtemp.sort()		#对元组排序,因为元组为:(忽略大小写的字符串,字符串),就是按忽略大小写的字符串排序

return [x[1] for x in listtemp]  #排序完成后,返回原字符串的列表

print case_insensitive_sort(list_of_string)  #调用起来,测试一下


结果:

['the', 'stirng', 'Has', 'many', 'line', 'In', 'THE', 'fIle']
**************************************************
['fIle', 'Has', 'In', 'line', 'many', 'stirng', 'THE', 'the']


另一种方法:

使用内建函数

sorted(iterable[,cmp[,
key[,reverse]]])
Return a new sorted list from the items in iterable.

key specifies a function of one argument that is used to extract a comparison key from each list element:key=str.lower. The default value isNone.

使用参数key=str.lower
代码如下:

def case_insensitive_sort2(liststring):
return sorted(liststring,key = str.lower)



效果一样~

方法三:

使用list的sort方法:

The sort() method takes optional arguments for controlling the comparisons.
cmp specifies a custom comparison function of two arguments (list items) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:
cmp=lambda
x,y: cmp(x.lower(), y.lower()). The default value is
None.

key specifies a function of one argument that is used to extract a comparison key from each list element:
key=str.lower. The default value is
None.

reverse is a boolean value. If set to
True, then the list elements are sorted as if each comparison were reversed.

def case_insensitive_sort3(liststring):
liststring.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))

case_insensitive_sort3(list_of_string)
print list_of_string
但这次调用的时候就有区别了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: