'''
abcccab 控制台输入abcccab 第一版按照控制台输入进行排版,第二版按字符出现次数,第三版按字符顺序(a.b.c..的顺序)排版
a=2
b=2
c=3
c=3
b=2
a=2
c=3
a=2
b=2
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:
for n in sorted(l,key=lambda x : -x.count):
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))
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)
for n in sorted(l,key=lambda x : -x.count):
print(n.ch, "=", n.count)
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))