python字符串排序方法,python字符串排序


本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧。分享给大家供大家参考之用。具体方法如下:

一般情况下,python中对一个字符串排序相当麻烦:

一、python中的字符串类型是不允许直接改变元素的。必须先把要排序的字符串放在容器里,如list。

二、python中的list容器的sort()函数没返回值。

所以在python中对字符串排序往往需要好几行代码。

具体实现方法如下:

>>> s = "string"
>>> l = list(s)
>>> l.sort()
>>> s = "".join(l)
>>> s
'ginrst'

对于刚从C/C++等语言转过来的程序员往往会觉得很习惯,因为在C/C++里这些都是一行语句可以搞定的事情。因此,这里给出了一个简单的字符串排序方法。

实现代码如下:

>>> s = "string"
>>> s = "".join((lambda x:(x.sort(),x)[1])(list(s)))
>>> s
'ginrst'

因为用了lambda,稍为有点难理解,但想通了就好了。

希望本文所述对大家的Python程序设计有所帮助


python字符串排序问题

print( ''.join( sorted( a ,key = lambda x : ord( x.lower( ) ) * 2 + x.islower( ) ) ) )
 

python按字符串个数排序

思路:
字典类型的典型用法,使用字典类型来统计出现次数,字符串作为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)]
 

评论关闭