python —— 真一
问题一:对“命运.txt”文件进行字符频次统计,输出频次最高的中文字符(不包含标点符号)及其频次,字符与频次之间采用英文冒号“:”分隔,示例格式如下:理:224
f = open('C:\\Users\\Administrator\\Desktop\\命运.txt','r')
txt = f.read()
d={}
for i in txt:if i not in ",。、?“”:;‘’《》!":d[i] = d.get(i,0)+1 #看键i是否在d内,在的话原值基础上+1;不在值设成0+1
#print(d)
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
print("{}:{}".format(ls[0][0],ls[0][1]))
f.close()
字典的内置方法:
- dict.get(key,default=None)
返回指定键的值,如果键不在字典中返回default设置的默认值
- dict.items()
返回的是一个 dict_items 对象,这是一种特殊的可迭代对象,可以被用于遍历或转化为列表
d = {'a': 10, 'b': 20, 'c': 30}
print(d.items()) ![]()
列表的内置方法:
- list.sort(key=None,reverse=False)
key -- 主要是用来进行比较的元素,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
vowels = ['e', 'a', 'u', 'o', 'i']# 降序
vowels.sort(reverse=True)# 输出结果
print ( '降序输出:', vowels )
# 获取列表的第二个元素
def takeSecond(elem):return elem[1]# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]# 指定第二个元素排序
random.sort(key=takeSecond)# 输出类别
print ('排序列表:', random)>>> [(4, 1), (2, 2), (1, 3), (3, 4)]
问题二:对"命运.txt"文件进行字符频次统计,按照频次由高到低,屏幕输出前10个频次最高的字符,不包含回车符,字符间无间隔,连续输出。
f = open('C:\\Users\\Administrator\\Desktop\\命运.txt','r')
txt = f.read()
d={}
for i in txt:if i not in '\n':d[i] = d.get(i,0)+1 #看键i是否在d内,在的话原值基础上+1;不在值设成0+1
#print(d)
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for k in range(10):print(ls[k][0],end='')#为字符串末尾添加一个空字符串
f.close()
问题三:对"命运.txt"文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车。将排序后的字符及频次输出到考生文件夹下,文件名为:"命运-频次排序.txt"。字符与频次间采用英文冒号:分隔,各字符之间采用英文逗号分隔,最后无逗号。
f = open('C:\\Users\\Administrator\\Desktop\\命运.txt','r')
fi = open('C:\\Users\\Administrator\\Desktop\\命运-频次排序.txt','w')
txt = f.read()
d={}
for i in txt:if i not in '\n':d[i] = d.get(i,0)+1 #看键i是否在d内,在的话原值基础上+1;不在值设成0+1ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)s=""
for k in ls:s += "{}:{}".format(k[0],k[1])+','fi.write(s[:-1:1])#除最后一个逗号
f.close()
fi.close()