Python字典数据合并及规则排序实现

题目

输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意: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("\'","\""))

 

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/programming-life/2026
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
Python字典数据合并及规则排序实现
题目 输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字! 输入格式: 在第一行中输入第一个字典字符串……
<<上一篇
下一篇>>
文章目录
关闭
目 录