1

Pythonを使用してパス文字列のリストで最も長い共通の親パス文字列のリストを見つける最も効果的な方法は何ですか?

追加の注意事項一致が 2 つ以上ある場合は、必要に応じて下に移動し、冗長性をできるだけ少なくします

入力リスト

input_paths = [
  '/path/to/a/directory/of/files',
  '/path/to/a/directory/full/of/files',
  '/path/to/some/more/files',
  '/path/to/some/more/directories/of/files'
  '/path/to/another/file',
  '/mount/another/path/of/files',
  '/mount/another/path/of/test/stuff',
  '/mount/another/path/of/files/etc',
  '/mount/another/drive/of/things',
  '/local/folder/of/documents'
]

出力リスト

common_prefix_list = [
  '/path/to/a/directory',
  '/path/to/some/more',
  '/path/to/another',
  '/mount/another/path/of',
  '/local/folder/of'
]

私の初歩的な推測では、os.sep でリストに分割してから集合交差を使用することですが、本質的に最長の一般的な部分文字列の問題を見つけるためのより堅牢なアルゴリズムがあると思います。これは何百万回も前に行われたと確信しているので、エレガントなソリューションを提供してください。

私の最終的なタスクは、プロジェクトに共通のアセットのリストを異なるパスに集めて、個々のアセットと競合したり、過度に冗長なパスを作成したりしない構造を持つ 1 つの共通フォルダーに集めることです。

4

0 に答える 0