Python 2.7
我的Sublime Linter报告此行不是PEP8:
D = {k:get_distance(v) for k, v in D.items() if len(v) > 1}
列8
和27
但是当我在冒号(:
)之后插入一个空格时,我在Sublime中得到一个红色感叹号。
如何使此行符合PEP8
?
更新
Sublime Text 2.0.2,build 2221; Sublime Linter v1.8; Python PEP8 Lint v2013.10.11.06
代码工作并生成没有错误的输出
答案 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字符。