题目:
字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意: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}
分析:
'1’的ASCII码大于1,故‘1’在后面。
可以用字符的ASCII码与int型数据比较,故需要记录数据类型。
这一点可以用字典来实现,类型为value()
设int型为1,str型为0
d3完成排序可以输出
#如输入样例2:{1:4,"1":9,"a":5}
#ASCII码
>>> ord('1')
49
>>> ord('a')
97
#新建立的字典d3={1:1,49:0,97:0}
易错:
输出里"1"是双引号,python输出默认’单引号’
所以直接输出排好的字典不行,必须要一个个输出
代码:
d1=eval(input())
d2=eval(input())
d3={}
c=0
for i in d1:
if i in d2:
d2[i]+=d1[i]
else:
d2[i]=d1[i]
#开始准备排序的类型
for k in d2:
if type(k)== type("a"):
d3[ord(k)]=0 #str
if type(k)==type(1):
d3[k]=1 #int
#输出
print('{',end='')
for j in sorted(d3):#[排列好的字符ASCII码和数字]
c+=1
if d3[j]==0:
print('"{}":{}'.format(chr(j),d2[chr(j)]),end='')
if d3[j]==1:
print('{}:{}'.format(j,d2[j]),end='')
if c<len(d3):
print(',',end='')
print('}')