1. 程式人生 > >python一道關於顛倒字典中鍵值的問題

python一道關於顛倒字典中鍵值的問題

題目

顛倒字典中的鍵和值。用一個字典做輸入,輸出另一個字典,用前者的鍵做值,前者的值做鍵。

首先要解決的就是輸入問題,上一篇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])如果剛開始想用單個字母做鍵的小夥伴執行時會報錯的。可以加以判斷是單個字母做鍵還是數字做鍵。(字串做鍵的話如果為了執行結果好看可以用正則表示式判斷)