7-41 字典合并 (40 分)

7-41 字典合并 (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}

我的回答:

dict1 = eval(input())
dict2 = eval(input())
for item in dict2:
    if item in dict1:
        dict1[item] = dict1[item] + dict2[item]
    else:
        dict1[item] = dict2[item]
# 按字典序排序
length = len(dict1)
ordered_dict = {}
isChar = False
for _ in range(length):
    min=100000000000
    for key in dict1:
        if type(key) == int:
            if key < min:
                min = key
                isChar = False
        else:
            if ord(key) < min:
                min = ord(key)
                isChar = True
    if isChar:
        ordered_dict[chr(min)] = dict1[chr(min)]
        del dict1[chr(min)]
    else:
        ordered_dict[min] = dict1[min]
        del dict1[min]
# 输出
comma_times = length-1
print("{",end="")
for key in ordered_dict:
    if type(key) == str:
        print(f'"{key}":{ordered_dict[key]}',end="")
    else:
        print(f'{key}:{ordered_dict[key]}',end="")
    if comma_times > 0:
        print(",",end="")
        comma_times -= 1
print("}")
  • 这题主要分为以下的几个要点:
  1. eval()把输入的字典格式的字符串转成字典类型
  2. 将两个字典合并成一个字典。
  3. 遍历合并后的字典,通过将字符转化成对应的ascll码的形式来采用选择排序法构造成一个按字典序排列的新有序字典
  4. 控制好输出的格式

你可能感兴趣的:(Python,python)