-->
当前位置:首页 > 题库 > 正文内容

编程题:字典合并

Luz3年前 (2022-05-13)题库1063
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!


### 输入格式:

在第一行中输入第一个字典字符串;

在第二行中输入第二个字典字符串。

### 输出格式:

在一行中输出合并的字典,输出按字典序。

"1" 的 ASCII 码为 49,大于 1,排序时 1 在前,"1" 在后。其它的字符同理。

### 输入样例1:

在这里给出一组输入。例如:

in
{1:3,2:5}
{1:5,3:7}



### 输出样例1:

在这里给出相应的输出。例如:

out
{1:8,2:5,3:7}


### 输入样例2:

在这里给出一组输入。例如:

in
{"1":3,1:4}
{"a":5,"1":6}



### 输出样例2:

在这里给出相应的输出。例如:

out
{1:4,"1":9,"a":5}



**鸣谢用户 卧龙几两钱 补充数据!**





答案:若无答案欢迎评论


#合并字典
dic1=eval(input())
dic2=eval(input())
dic3={}
keys=set(dic1.keys())|set(dic2.keys())
for key in keys:
value=dic1.get(key,0)+dic2.get(key,0)
if value!=0:
dic3[key]=value
#排序
lst=[(ord(k) if k not in range(0,10) else k,v) for k,v in dic3.items()]
lst.sort()
#输出
lst1=[]
for t in lst:
if 0<=t[0]<=9:
lst1.append("{}:{}".format(t[0],t[1]))
else:
lst1.append('''"{}":{}'''.format(chr(t[0]),t[1]))
print("{"+",".join(lst1)+"}")



#用lambda表达式
dict1=eval(input().strip())
dict2=eval(input().strip())
for i in dict2:
if i in dict1:
dict1[i]+=dict2[i]
else:
dict1[i]=dict2[i]
print("{",end='')
l=[]
for key,value in sorted(dict1.items(),key=lambda x:ord(x[0]) \
if type(x[0])==str else x[0]):
if type(key) ==str:
l.append('''"'''+str(key)+'''":'''+str(value))
else:
l.append(str(key)+":"+str(value))
print(",".join(l),end="")
print("}")

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。