別の言語から移植する機能がありますが、「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」にし始めていません(たとえば、「project.identifierがNoneでない場合、識別子の辞書ベースのレジストリを検索する述語に基づくfilter()」でリスト内包表記、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