字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意: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}
思路:
对于字典里的键值,必须是数字在前,字母在后,由于python不能把数字和字母之间进行大小写比较,因此可以构造两个列表list_dig、list_wor,分别存储两个字典中的数字和字母键,分别sort之后拼接到一起。
在循环遍历的同时将两个字典里的键值对放到一个新的字典dic里,相同键合并,最后按照格式要求输出即可。
源码:
s1=eval(input())
s2=eval(input())
list_dig=[]
list_wor=[]
dic={}
for i in s1:
dic[i]=dic.get(i,0)+s1.get(i,0)
if type(i)==type(1):
list_dig.append(i)
elif type(i)==type('w'):
list_wor.append(i)
for i in s2:
dic[i] = dic.get(i, 0) + s2.get(i, 0)
if type(i)==type(1):
list_dig.append(i)
elif type(i)==type('w'):
list_wor.append(i)
list_dig.sort();list_wor.sort()
list=list_dig+list_wor
print("{",end="")
cnt=0;length=len(dic)
for i in list:
if i in dic:
cnt += 1
if type(i)==type(1):
print("{}:{}".format(i,dic[i]),end="")
else:
print('"{}":{}'.format(i,dic[i]),end="")
del dic[i]
if cnt!=length:
print(",",end="")
print("}")