Python中的字典理解不是PEP8

时间:2015-07-24 13:04:55

标签: python pep8

Python 2.7我的Sublime Linter报告此行不是PEP8:

D = {k:get_distance(v) for k, v in D.items() if len(v) > 1}

827

但是当我在冒号(:)之后插入一个空格时,我在Sublime中得到一个红色感叹号。

sublime scr

如何使此行符合PEP8

更新

Sublime Text 2.0.2,build 2221; Sublime Linter v1.8; Python PEP8 Lint v2013.10.11.06

代码工作并生成没有错误的输出

2 个答案:

答案 0 :(得分:1)

:之后插入一个空格;这仍然是有效的Python语法:

D = {k: get_distance(v) for k, v in D.items() if len(v) > 1}

如果您遇到语法错误,请在其他地方介绍。例如,您可能忘记关闭前一行的)括号。

请注意,使用大写字母作为局部变量不符合PEP-8。为局部变量选择更好的lowercase_with_underscores名称:

def solution(seq):
    positions = defaultdict(list)
    for i, item in enumerate(seq):
        positions[item].append(i)
    distances = {k: get_distance(v) for k, v in positions.items() if len(v) > 1}
    return max(distances.value()) if distances else 0

最后但并非最不重要; positions字典中的索引有序(递增),因此get_distance()应返回l[-1] - l[0]以使其在O(1)常量时间内返回距离

答案 1 :(得分:0)

D = {k: get_distance(v) for k, v in D.items() if len(v) > 1}

这不是语法错误,是正确的PEP8编写方式。检查那里没有任何隐藏的unicode字符。