python字符串排序(按输入顺序/按字符出现次数/按字符)

'''
abcccab 控制台输入abcccab  第一版按照控制台输入进行排版,第二版按字符出现次数,第三版按字符顺序(a.b.c..的顺序)排版

a=2
b=2
c=3

c=3
b=2
a=2

c=3
a=2
b=2


''

'''

法一利用类+列表 进行排序操作

'''

class charAndCount:
    def __init__(self,ch=None,count=None):
        self.ch=ch
        self.count=count


s=input("请输入一个字符串:")
l=[]
for c in s :
    cc = [m for m in l if m.ch==c]
    if len(cc)==0:
        l.append(charAndCount(ch=c,count=1))
    else:

        cc.__getitem__(0).count +=1


print("按输入顺序")

for n in i:

    print(n.ch,"=",n.count)


print("按字符出现次数")
for n in sorted(l,key=lambda x : -x.count):

    print(n.ch, "=", n.count)


print("按字符顺序(a.b.c..的顺序)排版")
for n in sorted(l,key=lambda x :(-x.count,x.ch)):
    print(n.ch, "=", n.count)



'''
法二 利用字典进行排序操作
'''
zfc=input("请输入一个字符串:")
zd={i:zfc.count(i) for i in zfc}#zd字典存放,k=字符串中的每一个字符,v=每一个字符在该字符中出现的次数


print("按控制台输入的顺序进行排序:")
for x in zd:
    print(x,"=",zd.get(x))


print("字符的顺序进行排序:")
for x in sorted(zd,key=lambda xx:xx):#此时的xx为zd字典的key、
    print(x,"=",zd.get(x))


print("字符出现次数从大到小进行排序:")
for x in sorted(zd,key=lambda xx:(-zd.get(xx))):#此时的xx为zd字典的key、zd.get(xx)为value
    print(x, "=", zd.get(x))


print("字符出现次数从大到小进行排序,如果相同,再按照字符的顺序进行排序")
for x in sorted(zd,key=lambda xx:(-zd.get(xx),xx)):
    print(x,"=",zd.get(x))

你可能感兴趣的:(python学习笔记)