题目
颠倒字典中的键和值。用一个字典做输入,输出另一个字典,用前者的键做值,前者的值做键。
首先要解决的就是输入问题,上一篇python一道关于字典的题的文章已经解决了这个问题(个人比较懒直接复制粘贴了过来)。其次就是颠倒键值问题,这个比较简单。我们可以用循环把
def InsertDict(D, char1, char2):
这个函数把输入字典的值作为char1(即在新建的字典中当键),输入字典的键作为char2(即在新建的字典中当值)。
def InsertDict(D, char1, char2):
D.setdefault(char1)
D[char1] = char2
D = {}
L = input('请输入将要当作字典中值的列表: ')
L1 = list(L)
L2 = []
for i in range(len(L1)):
n = input('对于键为%d的键值对请输入与键对应的字符串: '%int(L[i]))
L2.append(n)
for i in range(len(L1)):
char1 = str(L1[i])
char2 = str(L2[i])
InsertDict(D, char1, char2)
print('没有颠倒键值前的字典为')
for eachkey in sorted(D):
print('key: ' + eachkey + ' ' + 'value: ' + D[eachkey])
#以上代码解决字典的输入问题,下面的代码解决用输入字典的值做键,键做值(前面已经说过自己比较懒,又不想把上一篇文章重新写,所以就复制粘贴了)#
D1 = {}
for k in D:
char1opposite = str(D[k])
char2opposite = str(k)
InsertDict(D1, char1opposite, char2opposite)
print('颠倒键值后的字典为')
for eachkey in sorted(D1):
print('key: ' + eachkey + ' ' + 'value: '
请输入将要当作字典中值的列表: 1234
对于键为1的键值对请输入与键对应的字符串: a
对于键为2的键值对请输入与键对应的字符串: b
对于键为3的键值对请输入与键对应的字符串: c
对于键为4的键值对请输入与键对应的字符串: d
没有颠倒键值前的字典为
key: 1 value: a
key: 2 value: b
key: 3 value: c
key: 4 value: d
颠倒键值后的字典为
key: a value: 1
key: b value: 2
key: c value: 3
key: d value: 4
注意一下为了输出比较好看在下面这段代码中
n = input('对于键为%d的键值对请输入与键对应的字符串: '%int(L[i]))
我用了%int(L[i])如果刚开始想用单个字母做键的小伙伴运行时会报错的。可以加以判断是单个字母做键还是数字做键。(字符串做键的话如果为了运行结果好看可以用正则表达式判断)