gpt4 book ai didi

这个函数的 Pythonic 等价物?

转载 作者:太空狗 更新时间:2023-10-30 01:45:03 27 4
gpt4 key购买 nike

我有一个从另一种语言移植的功能,你能帮我把它变成“pythonic”吗?

这里的函数以“非pythonic”方式移植(这是一个有点人为的例子 - 每个任务都与一个项目相关联或“无”,我们需要一个不同项目的列表,不同意味着没有重复.identifier 属性,从任务列表开始):

@staticmethod
def get_projects_of_tasks(task_list):

projects = []
project_identifiers_seen = {}

for task in task_list:

project = task.project

if project is None:
continue

project_identifier = project.identifier

if project_identifiers_seen.has_key(project_identifier):
continue

project_identifiers_seen[project_identifier] = True
projects.append(project)

return projects

我什至还没有特别开始让它成为“Pythonic”而不是从错误的脚开始(例如列表理解“if project.identifier is not None, filter() based on predicate that looks up the dictionary-based标识符的注册,使用 set() 去除重复等)

编辑:

根据反馈,我有这个:

@staticmethod
def get_projects_of_tasks(task_list):

projects = []
project_identifiers_seen = set()

for task in task_list:

project = task.project

if project is None:
continue

project_identifier = project.identifier

if project_identifier in project_identifiers_seen:
continue

project_identifiers_seen.add(project_identifier)
projects.append(project)

return projects

最佳答案

此代码没有任何非 Pythonic 的地方。一些可能的改进:

  • project_identifiers_seen 可以是一个集合,而不是字典。
  • foo.has_key(bar) 更好地拼写为 bar in foo
  • 我怀疑这是一个类的staticmethod。通常不需要 Python 中的类,除非您实际上在进行数据封装。如果这只是一个普通功能,请将其设为模块级功能。

关于这个函数的 Pythonic 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com