目录
问题 A: 列表嵌套字典的排序
问题 B: 字典查询
问题 C: 查询省会
问题 D: 摩尔斯电码转换
问题 E: 用字典来统计词频
问题 F: 字典更新
问题 G: 排序输出字典中数据
问题 H: 打印商品名
问题 I: 字符串压缩
-------------------都是些基础题-------------------------
题目描述
第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出。
输入
第一行输入一个正整数 N
随后的N 行各输入一个形如 “Tom 18” 的字符串
输出
根据年龄排序的列表
根据姓名排序的列表
样例输入 复制
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}]
def sort1(a):
return a['age']
def sort2(a):
return a['name']
n=int(input())
d={}
ans= []
a = {}
for i in range(n):
a[i]=input().split()
d["name"] = a[i][0]
d["age"] = int(a[i][1])
ans.append(d.copy())
ans.sort(key = sort1)
print(ans)
ans.sort(key = sort2)
print(ans)
题目描述
有字典 dict1 = {'赵广辉':'13299887777','特朗普':'814666888','普京':'522888666','吴京':'13999887777'},编程实现查找功能,用户输入姓名,如在字典中存在,输出“姓名:电话”,如不存在,则输出“数据不存在”。
输入
一个姓名
输出
姓名:电话
样例输入 复制
赵广辉
样例输出 复制
赵广辉:13299887777
dict1 = {'赵广辉':'13299887777','特朗普':'814666888','普京':'522888666','吴京':'13999887777'}
name=input()
try:
print("{}:{}".format(name,dict1[name]))
except:
print("数据不存在")
题目描述
总理有诗云:两湖两广两河山,五江云贵福吉安,四西二宁青甘陕,还有内台北上天。中国各省、直辖市、自治区和特别行政区的字典数据如下: capitals = {'湖南':'长沙','湖北':'武汉','广东':'广州','广西':'南宁','河北':'石家庄','河南':'郑州','山东':'济南','山西':'太原','江苏':'南京','浙江':'杭州','江西':'南昌','黑龙江':'哈尔滨','新疆':'乌鲁木齐','云南':'昆明','贵州':'贵阳','福建':'福州','吉林':'长春','安徽':'合肥','四川':'成都','西藏':'拉萨','宁夏':'银川','辽宁':'沈阳','青海':'西宁','海南':'海口','甘肃':'兰州','陕西':'西安','内蒙古':'呼和浩特','台湾':'台北','北京':'北京','上海':'上海','天津':'天津','重庆':'重庆','香港':'香港','澳门':'澳门'} 设计程序,接收用户输入的省、直辖市、自治区和特别行政区名称,输出对应的省会名称,当输入错误时输出“输入错误”。程序可以重复接收用户输入,直接输入回车时退出程序。
输入
一个或多个输入
每行输入一个省、直辖市、自治区或特别行政区名称
最后一行输入一个回车
输出
输出对应的省会名称
输入输出示例 输入 输出
样例输入 复制
新疆
北京
样例输出 复制
乌鲁木齐
北京
capitals = {'湖南':'长沙','湖北':'武汉','广东':'广州','广西':'南宁','河北':'石家庄','河南':'郑州','山东':'济南','山西':'太原','江苏':'南京','浙江':'杭州','江西':'南昌','黑龙江':'哈尔滨','新疆':'乌鲁木齐','云南':'昆明','贵州':'贵阳','福建':'福州','吉林':'长春','安徽':'合肥','四川':'成都','西藏':'拉萨','宁夏':'银川','辽宁':'沈阳','青海':'西宁','海南':'海口','甘肃':'兰州','陕西':'西安','内蒙古':'呼和浩特','台湾':'台北','北京':'北京','上海':'上海','天津':'天津','重庆':'重庆','香港':'香港','澳门':'澳门'}
while(1):
n=input()
if(n==""):
break;
try:
print(capitals[n])
except:
print("输入错误")
题目描述
摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。
编写程序,把输入的英文句子转换成摩尔斯电码并输出电码字符串。
本题只需要对英文字母(不区分大小写)进行编码转换,其他字符原样输出。
下面列表中为26个英文字母对应的摩尔斯电码。
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
输入
输出
样例输入 复制
How are you?
样例输出 复制
....---.-- .-.-.. -.-----..-?
ans=[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
n=input()
length=len(n)
for i in range (length):
temp=ord(n[i])
if(temp>=97 and temp<=122):
temp-=97
elif(temp>=65 and temp<=90):
temp-=65
else:
temp=520
if(temp!=520):
print(ans[temp],end="")
elif(temp==520):
print(n[i],end="")
题目描述
使用freqDict = eval(input()) 读入单词词频字典,再读入一段英文,默认按照英文输入的顺序,统计更新单词词频字典,并输出。
输入
输入为两行,第一行是一个字典,形如{'hello': 12, 'world': 10},其中存储初始的词频数据。第二行是一段英文文本。
输出
输出一行,直接打印输出更新后的字典。
样例输入 复制
{}
hello world
样例输出 复制
{'hello': 1, 'world': 1}
freqDict=eval(input())
n=input().split()
length=len(n)
for i in range(length):
if(n[i] in freqDict):
freqDict[n[i]]+=1
else:
freqDict[n[i]]=1
print(freqDict)
题目描述
现有字典:dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'} 尝试修改一个键值对,姓名和电话在两行里输入,如果输入的键在字典中存在,则用新输入的电话号码替换原来的号码,如输入的键在字典中不存在则输出“数据不存在”。操作完成后输出字典中所有键值对。
输入
两行,第一行是一个姓名,第二行是电话号码
输出
参考示例
样例输入 复制
李广
13299885566
样例输出 复制
数据不存在
赵广辉:13299887777
特朗普:814666888
普京:522888666
吴京:13999887777
dict1 = {'赵广辉': '13299887777', '特朗普': '814666888', '普京': '522888666', '吴京': '13999887777'}
name=input()
number=input()
if(name in dict1):
dict1[name]=number
else:
print("数据不存在")
for dictname in dict1:
print("{}:{}".format(dictname,dict1[dictname]))
题目描述
有两个字典数据如下: dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20} dic2 = {'李雷':21,'韩梅梅':18,'小明':23,'小红':20}
请将dic1 按键的大小升序排序,将dic2按值的大小升序排序,输出dic1的前n个键的内容,输出dic2前n个键值对。当n大于元素个数时,按实际元素数量输出。
输入
输入一个正整数n
输出
输出指定个数的排序后的元素
样例输入 复制
2
样例输出 复制
['Ana', 'Bob']
[('韩梅梅', 18), ('小红', 20)]
n=int(input())
dic1={'Tom':21,'Bob':18,'Jack':23,'Ana':20}
dic2={'李雷':21,'韩梅梅':18,'小明':23,'小红':20}
temp1=dict(sorted(dic1.items(),key = lambda x:x[0]))
ans2=sorted(dic2.items(),key = lambda x:x[1])
ans1=[]
for i in temp1.keys():
ans1.append(i)
print(ans1[:n])
print(ans2[:n])
题目描述
读入以空格分隔的多个商品名,例如:Iphone7 MacPro 小米6 Vivo Oppo,将其按如下格式输出:
商品列表:
0 Iphone7
1 MacPro
2 小米6
3 Vivo
4 Oppo
输入
输入为一行,是用空格分隔的多个商品名。
输出
输出为多行,第一行为“商品列表:”,从第二行开始为序号(从0开始编号)和商品名,序号和商品名之间以一个制表符( '\t' )分隔。
样例输入 复制
Iphone7 MacPro 小米6 Vivo Oppo
样例输出 复制
商品列表:
0 Iphone7
1 MacPro
2 小米6
3 Vivo
4 Oppo
shoplist=input().split()
length=len(shoplist)
ans={}
for i in range(length):
ans[i]=shoplist[i]
print("商品列表:")
for i in range(length):
print("{} {}".format(i,ans[i]))
题目描述
输入一个字符串s,s由若干个非数字的字符组成且相同的字符保证连续排列,将字符串按照下列规则进行长度压缩
将字符放前面,出现次数放后面,如果出现1次,则不需要保存次数
按照字符在s中出现的顺序输出压缩后的字符串.
输入:字符串
输出(三行):字典形式,键值对为 字符:出现次数
原字符串长度
压缩后字符串
压缩后字符串长度
abbc&&+++ {'a': 1, 'b': 2, 'c': 1, '&': 2, '+': 3} 9 ab2c&2+3 8
如果输入的s中有数字字符,直接输出‘ERROR’
样例输入 复制
abcc(((())))
样例输出 复制
{'a': 1, 'b': 1, 'c': 2, '(': 4, ')': 4}
12
abc2(4)4
8
n=input()
length=len(n)
ans={}
temp=0
for i in range(length):
if(ord(n[i])>=48 and ord(n[i])<=57):
print("ERROR")
break;
else:
temp=0
for j in range(i,length):
if(n[i]==n[j]):
temp=n.count(n[j])
else:
j-=1
ans[n[i]]=temp
break;
if(n[i]==n[j] and j==length-1):
ans[n[i]]=temp
break;
i=j
else:
print(ans)
print(length)
temp2=0
for key in ans.keys():
print(key,end="")
if(ans[key]!=1):
temp3=len(str(ans[key]))
temp2+=temp3
print(ans[key],end="")
length2=len(ans)
print("\n",end="")
print(temp2+length2)