SyntaxError:关于dict.fromkeys用法的语法无效

时间:2016-05-27 02:48:30

标签: python

有效的原始代码。

tbl = dict.fromkeys(i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P'))

但是当我想查看()中的内容时,我收到了错误消息。

i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')
  File "<ipython-input-58-3979c9c43bba>", line 1
    i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')
        ^
SyntaxError: invalid syntax

括号之间的代码让我感到困惑,似乎原始代码等于下面的代码,但为什么会这样?

for i in xrange(sys.maxunicode):
    if unicodedata.category(unichr(i)).startswith('P'):
        a.append(i)
tbl=dict.fromkeys(a)

1 个答案:

答案 0 :(得分:3)

您有generator expression,通常必须用括号括起来:

(i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P'))

当表达式是通话的唯一参数时,括号是可选的,这就是为什么您没有看到dict.fromkeys()来电的原因。

如果您想查看生成器表达式产生的值,您可能希望使用list comprehension代替,方括号替换括号:

[i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')]

生成器表达式生成一个生成器,必须迭代它以获取它的所有值,而列表推导立即迭代并生成一个列表。