浙大版《Python 程序设计》题目集 第5章-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}

分析:

'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('}')
发布了22 篇原创文章 · 获赞 4 · 访问量 873

猜你喜欢

转载自blog.csdn.net/qq_43745026/article/details/104701232