Python 而非 PEP8 中的字典理解
Dict comprehension in Python not PEP8
我的 Python 2.7
的 Sublime Linter 报告说这一行不是 PEP8:
D = {k:get_distance(v) for k, v in D.items() if len(v) > 1}
在第 8
列和 27
中
但是当我在冒号 (:
) 后插入一个 space 时,我在 Sublime 中得到一个红色感叹号。
如何使此行 PEP8
兼容?
更新
Sublime Text 2.0.2,内部版本 2221;
崇高短绒 v1.8 ;
Python PEP8 Lint v2013.10.11.06
代码可以正常运行并生成无错误的输出
D = {k: get_distance(v) for k, v in D.items() if len(v) > 1}
这不是语法错误,而是正确的 PEP8 写法。检查你那里没有任何隐藏的 unicode 字符。
在:
之后插入一个space;这仍然有效 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()
应该 return l[-1] - l[0]
使其成为 return O(1) 常数时间内的距离。
我的 Python 2.7
的 Sublime Linter 报告说这一行不是 PEP8:
D = {k:get_distance(v) for k, v in D.items() if len(v) > 1}
在第 8
列和 27
但是当我在冒号 (:
) 后插入一个 space 时,我在 Sublime 中得到一个红色感叹号。
如何使此行 PEP8
兼容?
更新
Sublime Text 2.0.2,内部版本 2221; 崇高短绒 v1.8 ; Python PEP8 Lint v2013.10.11.06
代码可以正常运行并生成无错误的输出
D = {k: get_distance(v) for k, v in D.items() if len(v) > 1}
这不是语法错误,而是正确的 PEP8 写法。检查你那里没有任何隐藏的 unicode 字符。
在:
之后插入一个space;这仍然有效 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()
应该 return l[-1] - l[0]
使其成为 return O(1) 常数时间内的距离。