python一道关于颠倒字典中键值的问题

来源:互联网 发布:爱淘宝流氓软件 编辑:程序博客网 时间:2024/06/06 03:37

题目

颠倒字典中的键和值。用一个字典做输入,输出另一个字典,用前者的键做值,前者的值做键。

首先要解决的就是输入问题,上一篇python一道关于字典的题的文章已经解决了这个问题(个人比较懒直接复制粘贴了过来)。其次就是颠倒键值问题,这个比较简单。我们可以用循环把def InsertDict(D, char1, char2):这个函数把输入字典的值作为char1(即在新建的字典中当键),输入字典的键作为char2(即在新建的字典中当值)。

def InsertDict(D, char1, char2):    D.setdefault(char1)    D[char1] = char2D = {}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: akey: 2 value: bkey: 3 value: ckey: 4 value: d颠倒键值后的字典为key: a value: 1key: b value: 2key: c value: 3key: d value: 4

注意一下为了输出比较好看在下面这段代码中

    n = input('对于键为%d的键值对请输入与键对应的字符串:  '%int(L[i]))

我用了%int(L[i])如果刚开始想用单个字母做键的小伙伴运行时会报错的。可以加以判断是单个字母做键还是数字做键。(字符串做键的话如果为了运行结果好看可以用正则表达式判断)