2013-03-11 30 views
1

我想創建一個字典,使QWERTY鍵盤的第一行中的字母的值爲1,主行中的鍵值爲零,最下一行中的鍵值爲2 。什麼是建立這本詞典最Python的方法?

我想這樣做是一條線,但我想不出一個辦法來做到這一點。

我知道這將做第一行,但有沒有辦法讓所有的行在一行?

firstRow = {i:1 for i in "q w e r t y u i o p".split(' ')} 

編輯,我想到了這一點:

keyboardRating = dict({i:1 for i in "q w e r t y u i o p".split(' ')}.items() + {i:0 for i in "a s d f g h j k l".split(' ')}.items() + {i:2 for i in "z x c v b n m".split(' ')}.items()) 

但我正在尋找的東西要簡單得多。

+2

「{c:1 for c」in「qwertyuiop」}'更簡短。 – 2013-03-11 01:10:11

回答

7

嗯,首先,有這一技巧用於獲取firstRow

firstRow = dict.fromkeys('qwertyuiop', 1) 

然後,我們可以只寫

keys = {} 
keys.update(dict.fromkeys('qwertyuiop', 1)) 
keys.update(dict.fromkeys('asdfghjkl', 2)) 
keys.update(dict.fromkeys('zxcvbnm,', 3)) 

或者,你可以嘗試這樣的事:

rows = {1: 'qwertyuiop', 0: 'asdfghjkl;', 2: 'zxcvbnm,.'} 
keys = {c:k for k,row in rows.iteritems() for c in row} 

由於涉及的靜態數據量很大,我不建議嘗試將其放入全部在一條線上。

+0

非常聰明。謝謝。 – Parseltongue 2013-03-11 01:13:57

相關問題