Python题库:字典
目录
- 1 字典查询
- 2 查询省会
- 2.1 描述
- 2.2 输入格式
- 2.3 输出格式
- 3 字典更新(2022重点看)
- 3.1 描述
- 3.2 输入格式
- 3.3 输出格式
- 4 列表嵌套字典的排序(2022重点看)
- 4.1 描述
- 4.2 输入格式
- 4.3 输出格式
- 4.4 代码
- 5 排序输出字典中数据
- 6 绩点计算
- 7 购物车
- 7.1 描述
- 7.2 输入
- 7.3 输出
字典查询
类型:字典
描述
有字典 dict1 = {'赵广辉':'13299887777','特朗普':'814666888','普京':'522888666','吴京':'13999887777'},编程实现查找功能,用户输入姓名,如在字典中存在,输出“姓名:电话”,如不存在,则输出“数据不存在”。
输入格式
一个姓名
输出格式
姓名:电话
示例 1
输入:赵广辉 输出:赵广辉:13299887777
查询省会
类型:字典
描述
总理有诗云:两湖两广两河山,五江云贵福吉安,四西二宁青甘陕,还有内台北上天。中国各省、直辖市、自治区和特别行政区的字典数据如下: capitals = {'湖南':'长沙','湖北':'武汉','广东':'广州','广西':'南宁','河北':'石家庄','河南':'郑州','山东':'济南','山西':'太原','江苏':'南京','浙江':'杭州','江西':'南昌','黑龙江':'哈尔滨','新疆':'乌鲁木齐','云南':'昆明','贵州':'贵阳','福建':'福州','吉林':'长春','安徽':'合肥','四川':'成都','西藏':'拉萨','宁夏':'银川','辽宁':'沈阳','青海':'西宁','海南':'海口','甘肃':'兰州','陕西':'西安','内蒙古':'呼和浩特','台湾':'台北','北京':'北京','上海':'上海','天津':'天津','重庆':'重庆','香港':'香港','澳门':'澳门'} 设计程序,接收用户输入的省、直辖市、自治区和特别行政区名称,输出对应的省会名称,当输入错误时输出“输入错误”。程序可以重复接收用户输入,直接输入回车时退出程序。
输入格式
一个或多个输入
每行输入一个省、直辖市、自治区或特别行政区名称
最后一行输入一个回车
输出格式
输出对应的省会名称
输入输出示例 输入 输出 示例 1 输入: 新疆 北京 输出: 乌鲁木齐 北京
字典更新(2022重点看)
类型:字典
描述
现有字典:dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'} 尝试修改一个键值对,姓名和电话在两行里输入,如果输入的键在字典中存在,则用新输入的电话号码替换原来的号码,如输入的键在字典中不存在则输出“数据不存在”。操作完成后输出字典中所有键值对。
输入格式
两行,第一行是一个姓名,第二行是电话号码
输出格式
参考示例
输入输出示例 输入 输出 示例 1 输入: 李广 13299885566 输出: 数据不存在 赵广辉:13299887777 特朗普:814666888 普京:522888666 吴京:13999887777 示例 2 输入: 普京 6667778888 输出: 赵广辉:13299887777 特朗普:814666888 普京:6667778888 吴京:13999887777
列表嵌套字典的排序(2022重点看)
类型:字典
描述
第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出。
输入格式
第一行输入一个正整数 N
随后的N 行各输入一个形如 “Tom 18” 的字符串
输出格式
根据年龄排序的列表
根据姓名排序的列表
示例 1
输入: 4 Tom 18 Jerry 47 Cat 20 Doge 33 输出: [{'name': 'Tom', 'age': 18}, {'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}] [{'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}, {'name': 'Tom', 'age': 18}] ```
代码
n = int(input()) ls = [] for i in range(n): x = input().split() ls.append({"name":x[0],"age":int(x[1])}) print(sorted(ls,key=lambda x: x['age'])) print(sorted(ls,key=lambda x: x['name']))
排序输出字典中数据
类型:字典
===描述===
有两个字典数据如下: dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20} dic2 = {'李雷':21,'韩梅梅':18,'小明':23,'小红':20}
请将dic1 按键的大小升序排序,将dic2按值的大小升序排序,输出dic1的前n个键的内容,输出dic2前n个键值对。当n大于元素个数时,按实际元素数量输出。
输入格式
输入一个正整数n
===输出格式===
输出指定个数的排序后的元素
示例 1 输入: 2 输出: ['Ana', 'Bob'] [('韩梅梅', 18), ('小红', 20)]
代码
dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20} dic2 = {'李雷':21,'韩梅梅':18,'小明':23,'小红':20} n = int(input()) if n > len(dic1): n = len(dic1) print(sorted(dic1.keys(),key = lambda item:item[0])[:n]) print(sorted(dic2.items(),key = lambda item:item[1])[:n])
绩点计算
类型:字典
描述
平均绩点计算方法:(课程学分1*绩点+课程学分2*绩点+......+课程学分n*绩点)/(课程学分1+课程学分2+......+课程学分n) 用户循环输入五分制成绩和课程学分,题目测试数据保证至少有一组或以上合法数据输入。输入‘-1’时结束输入,计算学生平均绩点。等级与绩点对应关系如下表:
成绩 等级 绩点 90-100 A 4.0 85-89 A- 3.7 82-84 B+ 3.3 78-81 B 3.0 75-77 B- 2.7 72-74 C+ 2.3 68-71 C 2.0 64-67 C- 1.5 60-63 D 1.3 补考60 D- 1.0 60以下 F 0
输入格式
每组输入包括两行
第一行是五分制的分数
第二行是一个代表学分的数字
===输出格式===
平均绩点,严格保留两位小数
示例
输入: A 3 B 3 A 2 -1 输出: 3.62
代码
''' 成绩 等级 绩点 90-100 A 4.0 85-89 A- 3.7 82-84 B+ 3.3 78-81 B 3.0 75-77 B- 2.7 72-74 C+ 2.3 68-71 C 2.0 64-67 C- 1.5 60-63 D 1.3 补考60 D- 1.0 60以下 F 0 平均绩点:(课程学分1*绩点+课程学分2*绩点+课程学分n*绩点)/(课程学分1+课程学分2+课程学分n) ''' #用户循环输入五分制成绩和课程学分,计算学生平均绩点。 score = {'A': 4.0, 'A-': 3.7, 'B+': 3.3, 'B': 3.0, 'B-': 2.7, 'C+': 2.3, 'C': 2.0, 'C-': 1.5, 'D': 1.3, 'D-': 1.0, 'F': 0.0} gpaSum, creditSum, gpaAve = 0, 0, 0 while True: s = input() if s == '-1': break elif s in score.keys(): credit = float(input()) gpaSum = gpaSum + score[s] * credit creditSum = creditSum + credit gpaAve = gpaSum / creditSum else: print('data error') print('{:.2f}'.format(gpaAve))
购物车
类型:字典
描述
现有列表记录商品名称和价格如下:
goods=[ {"name":"电脑","price": 4999 }, {"name":"鼠标","price": 80 }, {"name":"游艇","price": 200000 }, {"name":"别墅","price": 2000000 }, ]
要求用户输入总资产,例如: 20000,输出所有商品序号和商品列表,每行一种商品,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示'账户余额不足,先去赚钱吧!',否则,输出'恭喜你成功购买一个某商品'。
输入
两行,第一行是一个正整数,代表总资产;第二行是一个正整数,代表商品序号。
输出
查看下面实例
示例 1 输入: 10000 1 输出: 0 电脑 1 鼠标 2 游艇 3 别墅 恭喜你成功购买一个鼠标
goods=[ {"name":"电脑","price":4999}, {"name":"鼠标","price":80}, {"name":"游艇","price":200000}, {"name":"别墅","price":2000000}, ] money = int(input()) sum = 0 for i in range(len(goods)): print(i,goods[i].get('name')) choice = int(input()) sum = sum + goods[choice].get('price') if sum <= money: print('恭喜你成功购买一个{}'.format(goods[choice].get('name'))) else: print('账户余额不足,先去赚钱吧!')