浙大版《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('}')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值