任务描述
本关任务:根据附件文件,创建字典并实现按照分类进行查询的功能。
附件中文件名为menu.csv
,编码格式为UTF-8
。数据为csv
格式(文本),各数据项之间以逗号,
分隔
文件包含某餐饮品牌店中的菜品以及各菜品对应的相关成分数据(包含菜品分类Category
,菜品名称Item
,菜品份量Serving Size
,卡路里Calories
,总脂肪Total Fat
等) 文件内容示例:
代码模板已经实现了文件读取所有数据,并存为列表ls
,根据测试要求完成代码。
编程要求
将数据列表ls
中部分数据创建为字典: key
为序号(整数),按照文件顺序,从1开始依次递增,每次递增1。 value
为列表,包含菜品分类Category
,菜品名称Item
两组数据 输入n:
- 如果输入的n为一个文件中的菜品分类
Category
,则按照文件内数据顺序,输出数据字典中所有属于该分类的数据内容及数据总数量。每行输出字典中一个键值对,键key
与值value
之间用' : '间隔,值value
列表中的数据间都以一个英文空格间隔。 - 如果输入为字典的
key
值,则在一行内输出该key
对应的数据,以一个英文空格间隔 - 如果非以上输入,则输出
n Not Found
,n
为输入的数据。
测试说明
平台会对你编写的代码进行测试:
测试输入: Breakfast
预期输出: 1 : Breakfast Egg McMuffin
2 : Breakfast Egg White Delight
3 : Breakfast Sausage McMuffin
... ...
... ...
41 : Breakfast Fruit & Maple Oatmeal
42 : Breakfast Fruit & Maple Oatmeal without Brown Sugar
42
测试输入: 12
预期输出: Breakfast Sausage Biscuit (Large Biscuit)
测试输入: COFFEE
预期输出: COFFEE Not Found
开始你的任务吧,祝你成功!
答案如下:
def fopen():
'''本函数不允许修改,功能说明:
fopen()读取文件并返回二维列表l,数据格式为:
[['Rank', 'Name', 'Pay', 'Salary/Winnings', 'Endorsements', 'Sport', 'Year'],
['1', 'Lionel Messi', '$127 M', '$92 M', '$35 M', 'Soccer', '2019']
['2', 'Cristiano Ronaldo', '$109 M', '$65 M', '$44 M', 'Soccer', '2019'], ...]
'''
l=[]
with open('step7/2012-19sport.csv','r',encoding='UTF-8') as f:
for i in f.readlines():
l.append(i.strip().strip('#').split(','))
return l
ls=fopen()
year=input()
s=set()
for i in ls:
if year in i:
s.add(i[-2])
if len(s)==0:
print(f'No Record of {year}')
else:
ls_year_sports=sorted(s)
[print(*i) for i in enumerate(ls_year_sports,start=1)]