马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是:
生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。
要求:
1、利用random模块和string模块随机生成一个长度为1000由字符(包括英文字母,数字和标点符号)组成的字符串。
2、统计组成字符串的每个字符出现的次数,并将每个字符及其出现的次数保存在字典中。
要求用两种方式统计每个字符出现的次数:1)set+count;2)get方法
3、按每个字符出现的次数从大到小排序,并分行打印输出排在前五的每个字符及其出现的次数(从大到小)。
4、找到出现次数最多和最少的字符,打印输出出现次数最多和最少的字符及出现次数。
现在已经做到:import random
import string
x = string.ascii_letters + string.digits + string.punctuation
y = [random.choice(x) for i in range(1000)]
z = "".join(y)
dict1 = dict()
dict2 = dict()
print('随机生成的字符是',z)
a=''.join(set(z))
print('字符数量是',len(a))
#第一种统计方法
for a in z :
dict1[a] = dict1.get(a, 0) + 1
print(dict1)
#第二种
for a in z :
dict2.setdefault(a, 0)
dict2[a] += 1
print(dict2)
list1 = list(dict1.items())
list1.sort(key=lambda x:x[1],reverse=True)
print('从大到小是:',dict(list1))
newdict=dict(zip(dict1.values(),dict1.keys()))
def f(x) :
v1=sorted(dict1.values(),reverse=True)[x]
print(newdict.get(v1),v1)
return
f(0)
f(1)
f(2)
f(3)
f(4)
print("出现次数最多的是:['",newdict.get(sorted(dict1.values(),reverse=True)[0]),"']",sorted(dict1.values(),reverse=True)[0])
print("出现次数最少的是:['",newdict.get(sorted(dict1.values(),reverse=True)[len(list1)-1]),"']",sorted(dict1.values(),reverse=True)[len(list1)-1])
我是用了讲字典的value和key反过来,但是这样会覆盖掉一些相同的数据
我一开始想的是已知value值输出对应的key值,但是我做不到
后面我又想了一个办法,就是能不能在f(0)这一步之后,在原来的dict1中删除掉这个key-value对
然后我又失败了,希望论坛的大神能给出合适的解决方法!
感谢感谢,我只是一个大一的学生,希望大家给的意见或者方法可以让我听懂~
你做的方法是有错误的,给你修改了。 import random
import string
x = string.ascii_letters + string.digits + string.punctuation
y = [random.choice(x) for i in range(1000)]
##z = "".join(y)
dict1 = dict()
dict2 = dict()
print('随机生成的字符是',"".join(y))
##a=''.join(set(z))
print('字符数量是',len(set(y)))
#第一种统计方法 set + count
for a in set(y) :
dict1[a] = y.count(a)
print("第一种",dict1)
#第二种 get方法
for a in y :
dict2[a] = dict2.get(a, 0) + 1
print("第二种",dict2)
list1 = list(dict1.items())
list1.sort(key=lambda x:x[1],reverse=True)
print('从大到小是:',dict(list1))
print("-"*20)
print('前五:',dict(list1[:5]))
maxstr = {}
minstr = {}
for i in dict1:
if dict1[i] == max(dict1.values()):
maxstr[i] = dict1[i]
if dict1[i] == min(dict1.values()):
minstr[i] = dict1[i]
print("最多",maxstr)
print("最少",minstr)
|