s=input()
s=s.replace(' ','')
print(s)
题目要求统计不重复的行,而集合中的元素正好拥有不重复的特性,由此想到使用集合进行存取,能存进集合的行一定不重复,最后统计集合元素个数即可。
s=set()
num=0
f=open('latex.log','r')
lines=f.readlines()
for line in lines:
if(line not in s):
s.add(line)
num+=1
print('共{}关键行'.format(num))
参考答案写得更加简洁明了
f = open("latex.log")
ls = f.readlines()
s = set(ls)
print("共{}关键行".format(len(s)))
使用 try-except 语句输出错误信息
方法一:建一个空字典,按 value:key 的模式将读入的数据填入字典,再将字典输出
s = input()
try:
d = eval(s)
e = {}
for k in d:
e[d[k]] = k
print(e)
except:
print("输入错误")
方法二:使用 zip 函数,按照 value:key 的模式创建字典,输出该字典即可
zip函数:接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。
s=input()
try:
s=eval(s)
dic=dict(zip(s.values(),s.keys()))
print(dic)
except:
print("输入错误")
如果想深入探究 zip 和 dict 的应用,请参考这篇博客 zip和dict详解
先打开文件,从文件中读入整个文件内容,使用 j i e b a jieba jieba 库中的 l c u t lcut lcut 方法,将文件内容进行精确切分(输出的分词可以完整且不多余地组成原始文本),将分词中长度大于等于2的分词加入到新建立的字典中。使用 items() 方法将遍历字典中的键值对并转换为 list 列表。调用 list.sort() 排序函数,进行倒序排序,使用lambda 函数对 value 进行排序(x[0]是key,x[1]是value),列表中的第一个元素就是排序后的最大单词,输出即可。
import jieba
f=open('沉默的羔羊.txt','r',encoding='utf-8')
sp=f.read()
words=jieba.lcut(sp)
lis={}
for word in words:
if(len(word)>=2):
lis[word]=lis.get(word,0)+1
count=list(lis.items())
count.sort(key=lambda x:x[1],reverse=True)
print(count[0][0])
当然,字典转换为列表的语句同样可以用 zip 函数来实现。
原语句:
count=list(lis.items())
zip语句:
count=list(zip(lis.keys(),lis.values()))