1

QWERTY キーボードの最初の行の文字に 1 の値が与えられ、ホーム行のキーに値 0 が与えられ、一番下の行のキーに値 2 が与えられるような辞書を作成したいと考えています。

これを1行にしたかったのですが、これを行う方法が思いつきません。

これで最初の行が実行されることはわかっていますが、すべての行を 1 行で取得する方法はありますか?

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}

関連する静的データの量が多いため、すべてを 1 行にまとめようとすることはお勧めしません。

于 2013-03-11T01:10:15.330 に答える