1

我想创建一个字典,使得 QWERTY 键盘的第一行中的字母被赋予一个值,主行中的键被赋予一个值 0,而底行中的键被赋予一个值 2。

我想这样做是一条线,但我想不出一种方法来做到这一点。

我知道这会做第一行,但是有没有办法将所有行放在一行中?

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())

但我正在寻找更简单的东西。

4

1 回答 1

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}

由于涉及的静态数据量很大,我不建议尝试将它们全部放在一行上。

于 2013-03-11T01:10:15.330 回答