输入一个字典类型的字符串,反转其中键值对输出。即,读入字典key:value模式,输出value:key模式。 例如,输入:{‘a’: 1, ‘b’: 2} ,输出:{1: ‘a’, 2: ‘b’} 又比如输入:{‘a’: 20, ‘b’: 20,‘c’: (20,50)},输出:{20: [‘a’, ‘b’], (20, 50): ‘c’} 格式 输入格式 以字典形式输入一个由n(n≤100)个key:value形式组成的字符串,中间用逗号分隔。程序保证输入的均为字典形式的键值对,若key值重复,则只保留最后输入的一项。 输出格式 输出value:key模式,如果value有重复,则将其对应的key值合并成为一个列表。 样例 输入样例 {'a': 20, 'b': 20,'b': (20,50)} 输出样例 {20: 'a', (20, 50): 'b'} python
时间: 2024-03-10 07:48:16 浏览: 51
下面是一个实现上述功能的 Python 代码:
```python
import ast
# 读入字典字符串,转换为字典类型
input_str = input().strip()
input_dict = ast.literal_eval(input_str)
# 反转键值对,生成新的字典
output_dict = {}
for key, value in input_dict.items():
if value in output_dict:
if isinstance(output_dict[value], list):
output_dict[value].append(key)
else:
output_dict[value] = [output_dict[value], key]
else:
output_dict[value] = key
# 输出新的字典字符串
print(output_dict)
```
该代码首先读入一个字典字符串,然后将其转换为字典类型。然后使用一个循环,将每个键值对反转,生成新的字典。同时,对于新字典中已经存在的值,如果该值对应的键已经是一个列表了,就将新的键添加到该列表中;否则,将新的键和已有的键组成一个列表。最后,输出新的字典字符串。
需要注意的是,在将输入字符串转换为字典类型时,我们使用了 `ast.literal_eval()` 函数,这个函数可以安全地将一个字符串转换为对应的 Python 数据类型,避免了一些常规的安全问题。