2013-03-11 32 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

相关问题