PTA 浙江大学–《PYTHON 程序设计》第五章 第七周
7-11 字典合并 (40 分)
字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串 在第二行中输入第二个字典字符串
输出格式:
在一行中输出合并的字典,输出按字典序。"1"的ASCII吗为49,大于1,排序时1在前,"1"在后,其它的也一样。
输入样例1:
在这里给出一组输入。例如:
{1:3,2:5}
{1:5,3:7}
输出样例1:
在这里给出相应的输出。例如:
{1:8,2:5,3:7}
输入样例2:
在这里给出一组输入。例如:
{“1”:3,1:4}
{“a”:5,“1”:6}
输出样例2:
在这里给出相应的输出。例如:
{1:4,“1”:9,“a”:5}
代码如下:
#接收输入并转换为字典格式
d1 = eval(input())
d2 = eval(input())
#定义两个空列表
l1 = []
l2 = []
#定义cnt用于打印时判断是否到达列表结尾
cnt = 0
#循环.如果d1中有k键,那就值相加.如果没有就增加k键
for k in d2:
d1[k] = d1.get(k, 0) + d2[k]
#把d1中的键按类型分别加入两个列表,以便排序和控制输出是顺序
l1 = [k for k in d1 if type(k) == int]
l2 = [k for k in d1 if type(k) == str]
#排序
l1.sort()
l2.sort()
#合并排序后的列表到l1
l1 += l2
#按要求格式输出
print(’{’, end=’’)
for i in l1:
if type(i) == int:
print(’{}:{}’.format(i, d1[i]), end=’’)
else:
print(’"{}":{}’.format(i, d1[i]), end=’’)
if cnt < len(l1)-1:
print(’,’,end=’’)
cnt += 1
print(’}’)