python实现忽略大小写对字符串列表排序的方法,python大小写
python实现忽略大小写对字符串列表排序的方法,python大小写
本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:
先来看看如下代码:
string = ''' the stirng Has many line In THE fIle jb51 net ''' 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', 'jb51', 'net'] ************************************************** ['fIle', 'Has', 'In', 'jb51', 'line', 'many', 'net', '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
完整代码如下:
string = ''' the stirng Has many line In THE fIle jb51 net ''' list_of_string = string.split() print list_of_string #将字符串分离开,放入列表中 print '*'*50 def case_insensitive_sort2(liststring): return sorted(liststring,key = str.lower) print case_insensitive_sort2(list_of_string)#调用起来,测试一下
效果一样~
方法三:
使用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.
具体代码如下:
string = ''' the stirng Has many line In THE fIle jb51 net ''' list_of_string = string.split() print list_of_string #将字符串分离开,放入列表中 print '*'*50 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
但这次调用的时候就有区别了。
感兴趣的朋友可以调试运行一下本文实例以加深印象,相信会有新的收获!
思路:
字典类型的典型用法,使用字典类型来统计出现次数,字符串作为key,出现次数作为value。
代码如下:可以根据你的需要改,这个是把字符串的前后导空格都去掉了,空字符串不统计。
PS:又改了一下,这样效果能跟好点
# --coding:GB2312--
dic = {} #定义一个字典类型
fp = open('data.txt') #打开要查询的文件
for line in fp: #从fp中读取行,利用这种方法可以避免有空行截断读取
line = line.strip()#去掉前后导空白
if('' == line):
continue #去掉前后导空白如果是空行不作处理
if(line in dic): #判断s是否在字典内,如果在统计加1
dic[line] += 1
else: #如果不在,首次出现统计增加新key,统计数初始化为1
dic[line] = 1
fp.close() #读完文件,关闭文件
#按value排序,返回是一个元组的列表
afterSort = sorted(dic.items(), key=lambda dic: dic[1])
print afterSort #打印排序后列表,可按照自己需求提取打印
结果:
data.txt里存有
qiang
song
wan
qiang
song
qiang
执行python后打印出:
[('wan', 1), ('song', 2), ('qiang', 3)]
print( ''.join( sorted( a ,key = lambda x : ord( x.lower( ) ) * 2 + x.islower( ) ) ) )
相关内容
- python实现给字典添加条目的方法,python字典
- python中bisect模块用法实例,pythonbisect
- python实现获取序列中最小的几个元素,python序列
- python中类的一些方法分析,python方法分析
- python使用marshal模块序列化实例,pythonmarshal
- python使用cPickle模块序列化实例,pythoncpickle
- python实现在pickling的时候压缩的方法,pythonpickling
- 跟老齐学Python之dict()的操作方法,齐学python
- 跟老齐学Python之有点简约的元组,齐学python
- 跟老齐学Python之数据类型总结,齐学python数据类型
评论关闭