任务描述

本关任务:编写一个能计算文档《中学诗词.txt》中各位作者作品数量的程序。
遍历文档中每一行,提取作者的姓名,将其作为键加入到字典中,字典的值为作品数量。
然后将字典转换为二维列表,按作品数量的降序排列。
相关知识
为了完成本关任务,你需要掌握:1.字典的操作,2.字典转换为列表。
字典的操作
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示
d = {key1 : value1, key2 : value2 }
建立空字典
d={}
向字典添加新内容的方法是增加新的键/值对
d["范仲淹"]=1
则d为{"范仲淹":1}
修改键值对的方法为
d["范仲淹"]=2
则d为{"范仲淹":2}
d["范仲淹"]的值为2
d.get(key,default)键存在则返回相应值,否则返回默认值
字典转换为二维列表
lt = list(d.items())
可将字典转换为二维列表,
二维列表的每项值为列表,列表的第一项为字典的键,第二项为字典的值
编程要求
根据提示,在右侧编辑器补充代码,计算并显示各位作者作品数量。
测试说明
平台会对你编写的代码进行测试:

f1 = open("sy9//中学诗词.txt", "r", encoding = 'utf-8')
#代码开始
lt = {}
for line in f1:
line=line.split()
if len(line)>=2 and 2<=len(line[-1])<=4:
name = line[-1]
lt[name] =lt.get(name,0)+1
else:
continue
lt = list(lt.items())
lt.sort(key = lambda x: x[1], reverse = True)
#代码结束
for i in lt:
print(i[0],i[1])
f1.close()
4774

被折叠的 条评论
为什么被折叠?



