python - 构建这本词典的最 pythonic 方法是什么?

标签 python dictionary performance

我想创建一个字典,使 QWERTY 键盘第一行中的字母的值为 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())

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

最佳答案

好吧,首先,有一个巧妙的技巧可以获取 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}

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

关于python - 构建这本词典的最 pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15329749/

相关文章:

mysql - 有什么方法可以在同一个查询中获得第 95 个百分位数和总和?

python - 基于多个字典转换数据

performance - azure ml 的计时测试

python - 表示蜂窝格子的最佳方式是什么?

python - 测试 Django 站点显示正确的图形 - 图像相似性?

python - 如何从每个键的数据帧字典中获取平均值和标准差

ios - 如何从嵌套 JSON Swift 检索值

performance - 如何在CockroachDB中构建 Multi-Tenancy 系统以保证良好的性能?

python - 在 OSX 10.6 上为 Python 安装 MySQLdb - 创建 .egg 时出错

python - 获取包含特定文本的 td,然后找到其 parent 和 sibling