题目
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意: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}
思路
循环遍历字典2,如果当前key存在于字典1中,需将值合并(累加处理),否则直接添加到字典1。这样如此就将字典2合并至字典1。后面通过冒泡排序对字典1进行排序,排序规则按照题目要求,字符需要转换为ASCII与数字整形进行比较(如果字符是一串的,笔者认为可以将每个字符的ASCII记录到一个集合里,拿集合SUM互相比较)。最终排序完输出字典即可。
问题
非常完美,一切都按照咱们的想法进行下去了。按理来说做到上面步骤就结束了,但非常不幸的是,输出的字符串与答案有所差异。字典的字符串输出每个keyPair间总是会有空格,还有字符是使用‘’。最终处理:print(str(dic3).replace(" ",'').replace("/'","/""))
实现
dic1=eval(input())
dic2=eval(input())
dic3={}
for k,v in dic2.items():
if k in dic1:
dic1[k]+=dic2.get(k)
else:
dic1.update({k:v})
keys=list(dic1.keys())
for i in range(0,len(keys)-1):
for j in range(0,len(keys)-i-1):
key1Int=isinstance(keys[j],int) and keys[j] or ord(keys[j])
key2Int=isinstance(keys[j+1],int) and keys[j+1]or ord(keys[j+1])
if key1Int>key2Int:
keys[j],keys[j+1]=keys[j+1],keys[j]
for k in keys:
dic3.update({k:dic1[k]})
print(str(dic3).replace(" ",'').replace("/'","/""))